Создание ассоциативного массива в PHP

У меня многомерный массив.

$shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") ); 

Первый элемент в каждом массиве – номер приложения, а остальные в каждом массиве – номера публикаций . Я получаю первый элемент (номер приложения) и последний элемент каждого массива (последний номер публикации), как это

  $index = count(array_keys($shop)); for($i=0;$i<$index;$i++){ $appln_nr = $shop[$i][0]; echo $appln_nr; $publn_nr_index = count(array_keys($shop[$i]))-1; $publn_nr = $shop[$i][$publn_nr_index]; echo $publn_nr; } 

Теперь у меня есть номер приложения и номер публикации для каждого внутреннего массива.

Я хочу создать ассоциативный массив из номеров приложений и номеров публикаций.

где ключ должен быть номером приложения, а его значение – номер публикации.

благодаря

РЕДАКТИРОВАТЬ

Что я получаю из магазина $ shop

  Array ( [0] => Array ( [0] => appn1 [1] => pub1 [2] => pub2 [3] => pub3 ) [1] => Array ( [0] => appn2 [1] => pub1 ) [2] => Array ( [0] => appn3 [1] => pub1 [2] => pub2 ) ) 

И это то, что мне нужно в моем ассоциативном массиве

 Array( "appn1" => "pub3" "appn2" => "pub1" "appn3" => "pub2" ) 

Наконец, я понял, что вы хотели, после вашего редактирования XD:

 $shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") ); $shopNew = array(); foreach($shop as $value){ $shopNew[$value[0]] = end($value); } // now if you want you can replace $shop and unset $shopNew $shop = $shopNew; unset($shopNew); print_r($shop); с $shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") ); $shopNew = array(); foreach($shop as $value){ $shopNew[$value[0]] = end($value); } // now if you want you can replace $shop and unset $shopNew $shop = $shopNew; unset($shopNew); print_r($shop); 

вывод следующий:

 Array ( [appn1] => pub3 [appn2] => pub1 [appn3] => pub2 ) 

Можешь попробовать

 $shop = array( array("appn1","pub1","pub2","pub3"), array("appn2","pub1"), array("appn3","pub1","pub2") ); $final = array(); array_map(function ($var) use(&$final) {$final[reset($var)] = end($var);}, $shop); var_dump($final); 

Вывод

 array 'appn1' => string 'pub3' (length=4) 'appn2' => string 'pub1' (length=4) 'appn3' => string 'pub2' (length=4) 

Вы можете легко преобразовать свой массив в новый формат, используя первый элемент в качестве ключа (см. reset ) и последний элемент (см. end ) в качестве значения:

 foreach($shop as $fl) { $v[reset($fl)] = end($fl); } 

Результат в $v тогда.

Если вы хотите преобразовать массив, вам нужно также удалить каждый элемент:

 foreach($shop as $v => $fl) { $shop[reset($fl)] = end($fl); unset($shop[$v]); } с foreach($shop as $v => $fl) { $shop[reset($fl)] = end($fl); unset($shop[$v]); } 

Результат получается в $shop . Unset заботится об удалении из массива.

Вывод в обоих случаях:

 array(3) { 'appn1' => string(4) "pub3" 'appn2' => string(4) "pub1" 'appn3' => string(4) "pub2" } 

попробуй это:

  foreach($shop as $k => $v) { $new_arr[$v[0]] = end($v); } 

Это должно дать вам этот результат,

 $new_arr = array( "appn1" => "pub3", "appn2" => "pub1", "appn3" => "pub2"- );