как преобразовать первое значение в качестве ключа имени массива php

#php #arrays #key

#php #массивы #Клавиша

Вопрос:

как преобразовать первое значение в качестве ключа массива и php. Привет, я работаю над некоторыми операциями с массивом. ниже приведен массив, который у меня есть:

 $data= array
(
    array('city', 'california','big city'),
    array('address', 'this is','address', 'zzz'),
    array('something', 'item 3','details 3'),
);

Array
(
    [0] => Array
        (
            [0] => city
            [1] => california
            [2] => big city
        )
    [1] => Array
        (
            [0] => address
            [1] => this is
            [2] => address
            [3] => zzz
    [2] => Array
        (
            [0] => something
            [1] => item 3
            [2] => details 3
        )
        ..........
)
  

я ожидаю этого результата:

 Array
(
    [city] => Array
        (
            [0] => city
            [1] => california
            [2] => big city
        )
    [address] => Array
        (
            [0] => address
            [1] => this is
            [2] => address
            [3] => zzz
    [something] => Array
        (
            [0] => something
            [1] => item 3
            [2] => details 3
        )
        ..............
)
  

упомянутый выше результат.Я уже пробовал использовать функции массива array_keys и array_values, но это не сработает. протяните мне руку помощи

Комментарии:

1. можем ли мы посмотреть, как вы создаете массив для начала?

2. Как вы сгенерировали этот массив?

3. $ddd = array ( массив (‘city’, ‘california’, ‘big city’), array(‘address’, ‘this is’, ‘address’, ‘zzz’), array(‘something’, ‘item 3′,’details 3’), );

4. подождите .. вы вручную создаете массив? Почему бы вам просто не сделать 'city' => array('other', 'values') ?

5. если полученный массив похож на этот, как мы можем изменить

Ответ №1:

Попробуйте с forEach

  $data= array
(
    array('city', 'california','big city'),
    array('address', 'this is','address', 'zzz'),
    array('something', 'item 3','details 3'),
);
 $res=[];
foreach($data as $val){
    $res[$val[0]] = $val;
}
print_r($res);
  

Комментарии:

1. несмотря на правильность, весь код вверху написан вручную.. Я бы предпочел предложить начать правильное создание массива.. (но я, возможно, педантичен)

2. можем ли мы сделать это без цикла.

3. цикл @user11246426 прост и эффективен. Теперь мы можем с Array#reduce добиться того же результата. Но в этом случае это не обязательно