Как создать ассоциативный массив с использованием 2-мерного массива в php? - PullRequest
0 голосов
/ 22 августа 2011

Как я могу создать ассоциативный массив, используя массив ниже, самый быстрый и самый короткий способ.

$list = array(array('name', 'aram'), array('family', 'alipoor'));

Что-то вроде:

$list = array('name' => 'aram', 'family' => 'alipoor');

Ответы [ 4 ]

3 голосов
/ 22 августа 2011
$assocArray = array();

foreach($list as $subArray)
{
    $assocArray[$subArray[0]] = $subArray[1];
}
2 голосов
/ 22 августа 2011

Самое короткое, о чем я могу подумать:

$newlist = array();
foreach ( $list as $keyval ) {
    $newlist[ $keyval[0] ] = $keyval[1];
}
0 голосов
/ 22 августа 2011

Я вообще думаю, что foreach довольно хорошо читается и обычно довольно быстр.Если вы хотите, чтобы это было в одной строке, вы также можете сделать с foreach:

$nl = array(); foreach($list as $k=>$v) $nl[$k]=$v; $list = $nl; unset($nl);

Что в основном демонстрирует, что нет смысла получать что-то «в одну строку».вы предпочитаете обратные вызовы по какой-то причине, о которой я не знаю:

$list = array_reduce($list, function($v,$w) {return $v+array($w[0]=>$w[1]);}, array());

Что также демонстрирует это.Это вряд ли будет быстрее, чем foreach, в любом случае разница в скорости, безусловно, не имеет значения в вашем случае.

0 голосов
/ 22 августа 2011

Страшный подход, но

$lst = array_combine(array_map('array_shift',$list), array_map('array_pop',$list));

Работает только для двухэлементных внутренних массивов.

Примечание: три неявных цикла в этом решении. Так что лучше воспользуйтесь подходом от Рейка ван Вел или kevinmajor1 ответ

...