как назначить id на основе значений массива

Я изучаю php, пожалуйста, помогите.

Я храню значения в массиве, а затем я пытаюсь получить идентификатор другого массива, проверяя значение в массиве следующим образом:

$arr_folders = ['one', 'two', 'whatever']; $id_one = ''; $id_two = ''; $id_whatever = ''; foreach ($tree as $key => $value) { if($value['name'] == 'one'){//how to check dynamically? $id_one = $value['id']; } if($value['name'] == 'two'){//how to check dynamically? $id_two = $value['id']; } if($value['name'] == 'whatever'){//how to check dynamically? $id_whatever = $value['id']; } } echo $id_whatever; 

Как я могу проверить значения массивов динамически. Я имею в виду, что хочу проверить, существует ли значение в массиве, а затем назначить их идентификатор.

Solutions Collecting From Web of "как назначить id на основе значений массива"

Вам нужно использовать in_array чтобы проверить, существует ли этот элемент в другом массиве, и если он найден, вы можете создать динамическую переменную, основанную на $value['name'] содержащую $value['id'] мере необходимости.

 $tree = [ ['id' => 1, 'name' => 'one'], ['id' => 2, 'name' => 'two'], ['id' => 3, 'name' => 'three'] ]; $arr_folders = ['one', 'two', 'whatever']; foreach ($tree as $key => $value) { if (in_array($value['name'], $arr_folders)) { ${'id_'.$value['name']} = $value['id']; } } echo $id_one; 

Рабочий пример: https://eval.in/596034

Примечание: убедитесь, что $value['name'] не содержит пробелов или других символов, которым запрещено объявлять имена переменных.

Попробуйте использовать поиск массива

Например:

 <?php $arr_folders = ['one', 'two', 'whatever']; foreach ($tree as $key => $value) { if (($key = array_search($arr_folders, $value)) !== false) { return $arr_folders[$key]; } } echo $id_whatever; 

Если я понимаю вопрос, вы спрашиваете, как вы можете проверить содержимое одного массива (в данном случае [one, two, whatever] ) в середине цикла через другой массив без жесткого кодирования. Если это так, я могу попробовать что-то вроде этого:

 $arr_folders = ['one', 'two', 'whatever']; $id_folders = ['', '', ''] foreach ($tree as $key => $value) { foreach ($arr_folders as $fkey => $fvalue) { // f for folder, in this case if($value['name'] == $fvalue){ $id_folders[$fkey] = $value['id']; } } } echo $id_folders[2]; 

Могут быть и другие, более элегантные или эффективные по времени решения, но я думаю, что это отражает динамический характер, который вы ищете, при этом отражая фактический процесс предыдущего кода.

вот пример кода:

 <?php $arr_folders = ['one', 'two', 'whatever']; $tree= Array(Array('id' => 1,'name' => 'one'), Array('id' => 2,'name' => 'large'), Array('id' => 3,'name' => 'thumb'), Array('id' => 4,'name' => 'two'), Array('id' => 5,'name' => 'large'), Array('id' => 6,'name' => 'thumb') ); foreach ($tree as $key => $value) { if(in_array($value['name'],$arr_folders)){ $searchedIds[] = $value['id']; } } print_r($searchedIds); ?>