У меня есть следующий многомерный массив:
Array ( [0] => Array ( [id] => 1 [name] => Jonah [points] => 27 ) [1] => Array ( [id] => 2 [name] => Mark [points] => 34 ) )
В настоящее время я использую цикл foreach
для извлечения значений из массива:
foreach ($result as $key => $sub) { ... }
Но мне было интересно, как узнать, существует ли значение внутри массива.
Так, например, если бы я хотел добавить еще один набор в массив, но id равен 1
(так что человек – Jonah), а их оценка равна 5, могу ли я добавить 5 к уже созданному значению массива в id 0
вместо создания новое значение массива?
Итак, после того, как цикл завершится, массив будет выглядеть так:
Array ( [0] => Array ( [id] => 1 [name] => Jonah [points] => 32 ) [1] => Array ( [id] => 2 [name] => Mark [points] => 34 ) )
Как насчет циклического перемещения по вашему массиву, проверяя каждый элемент, если он является id
, который вы ищете?
$found = false; foreach ($your_array as $key => $data) { if ($data['id'] == $the_id_youre_lloking_for) { // The item has been found => add the new points to the existing ones $data['points'] += $the_number_of_points; $found = true; break; // no need to loop anymore, as we have found the item => exit the loop } } if ($found === false) { // The id you were looking for has not been found, // which means the corresponding item is not already present in your array // => Add a new item to the array }
вы можете сначала сохранить массив с индексом, равным id. например :
$arr =Array ( [0] => Array ( [id] => 1 [name] => Jonah [points] => 27 ) [1] => Array ( [id] => 2 [name] => Mark [points] => 34 ) ); $new = array(); foreach($arr as $value){ $new[$value['id']] = $value; } //So now you can check the array $new for if the key exists already if(array_key_exists(1, $new)){ $new[1]['points'] = 32; }
Несмотря на то, что на вопрос ответили, я хотел опубликовать свой ответ. Может пригодиться будущим зрителям. Вы можете создать новый массив из этого массива с фильтром, после чего вы можете проверить, существует ли значение в этом массиве или нет. Вы можете следовать приведенному ниже коду. Образец
$arr = array( 0 =>array( "id"=> 1, "name"=> "Bangladesh", "action"=> "27" ), 1 =>array( "id"=> 2, "name"=> "Entertainment", "action"=> "34" ) ); $new = array(); foreach($arr as $value){ $new[$value['id']] = $value; } if(array_key_exists(1, $new)){ echo $new[1]['id']; } else { echo "aaa"; } //print_r($new);