Как вернуть элемент из многомерного массива?

У меня есть текстовый файл с содержимым, таким как следующие, которые являются идентификаторами и именами.

23414,apple
24323,orange
64563,banana

В файле PHP я читаю содержимое текстового файла в массив, как

$itemArray = array();

$records = file('/path/to.file/guilds.txt');
foreach ($records as $line) {
$lineArray = explode(',',$line);
array_push($itemArray,$lineArray);
}

Если я знаю идентификатор конкретной записи, скажем, 24323, как я могу вернуть соответствующее имя, оранжевое. Все идентификаторы уникальны. Я попытался что-то вроде следующего без удачи.

$id = 24323;

echo "Result:" . array_search($id, array_column($itemArray,1,0));

Изменить: чтобы уточнить код.

1

Решение

Если я знаю идентификатор конкретной записи, скажем 2, как я могу вернуть
ассоциированное имя, оранжевый. Все идентификаторы уникальны. Я пробовал что-то вроде
следующее без удачи.

Поскольку вы сказали, что идентификаторы уникальны, лучше создать массив, как показано ниже:

$itemArray = array();

$records = file('/path/to.file/guilds.txt');
foreach ($records as $line)
{
$lineArray = explode(',',$line);
$itemArray[ $lineArray[0] ] = $lineArray;

/* Use below if you just want to store name
$itemArray[ $lineArray[0] ] = $lineArray[0];
*/
}

и вы можете легко получить к ним доступ, как показано ниже

$id = 24323;
print_r( $itemArray[$id] );

/*You will get below
Array
(
[0] => 24323
[1] => orange
)

*/

// and if you want just to print orange then
echo $itemArray[$id][1];   // orange
2

Другие решения

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

$itemArray[0] => 1
$itemArray[1] => Apple
$itemArray[2] => 2
$itemArray[3] => Orange
$itemArray[4] => 3
$itemArray[5] => banana

Так что я думаю, что вы должны читать с индексом

0

короткий preg_match_all + array_combine решение функций:

preg_match_all('/^(?P<id>[0-9]+),(?P<name>\w+)\s*/m', file_get_contents('/path/to.file/guilds.txt'), $m);
$result = array_combine($m['id'], $m['name']);

print_r($result[24323]);

Выход:

orange
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector