Как мне получить индекс массива строк на php? - PullRequest
1 голос
/ 23 июня 2011

Допустим, у меня есть многомерный массив строк:

.food = array(
            'vegetable' => array(
                               'carrot' => 'blablue', 
                               'potato' => 'bluebla', 
                               'cauliflower' => 'blabla'
                           ), 
            'Fruit' => array(
                               'apple' => 'chicken65', 
                               'orange' => 'salsafood', 
                               'pear' => 'lokkulakka'
            )
);

возможно ли получить доступ к массиву, используя индекс в качестве чисел, а не имя ключа? Поэтому для доступа к chicken65 я наберу echo $ food [1] [0]; Я не хочу использовать числа в качестве ключа, потому что это большой массив и удобнее для пользователя, если я использую строку в качестве ключа, и это позволит мне делать циклы for на продвинутом уровне.

Ответы [ 6 ]

6 голосов
/ 23 июня 2011

Вы можете делать циклы foreach для достижения почти того же, что и типичный цикл for.

foreach ($foods as $key => $value) {
    //For the first iteration, $key will equal 'vegetable' and $value will be the array
}
4 голосов
/ 23 июня 2011

$food[1][0] != $food[1]['apple'], поэтому в этом случае нельзя использовать цифровые клавиши.

1 голос
/ 23 июня 2011

try

$new_array = array_values($food);

однако, переменная не может начинаться с ..Должно начинаться с $

0 голосов
/ 23 июня 2011

Я не думаю, что есть что-то родное, чтобы пойти по этому пути.

И кажется, что вы пытаетесь немного растянуть массив.

Тебе стоит пойти ООП на этом.

Создайте объект FoodFamilly и объект Food, в котором вы можете хранить массивы при необходимости, и вы сможете написать хороший удобный код и добавлять индексы при необходимости.почти всегда ответ :) 1009 *

0 голосов
/ 23 июня 2011

вы можете попробовать функцию array_values, но так как вы имеете дело с многоуровневыми массивами, вот решение, опубликованное программистом php

http://www.php.net/manual/en/function.array-values.php#103905

но было бы проще использовать foreach вместо for.

0 голосов
/ 23 июня 2011

Вы можете использовать array_keys () для массива. Полученный массив можно просмотреть через цикл for и получить ассоциативный ключ.

Я покажу вам это для первого измерения:

$aTest = array('lol' => 'lolval', 'rofl' => 'roflval');
$aKeys = array_keys($aTest);
$iCnt = count($aKeys);

for($i = 0; $i < $iCnt; ++$i)
{
  var_dump($aTest[$aKeys[$i]]);
}

Вам нужно сделать это для двух измерений, но я бы не рекомендовал это. Это на самом деле более навязчиво и медленнее, чем большинство других решений.

...