2017-03-08 2 views
-1

Ich habe den folgenden Code:Kopieren Zifferntaste für Array-Wert

Array 
(
    [0] => Array 
     (
      [id] => '157a', 
      [name] => '***', 
     ) 

    [1] => Array 
     (
      [id] => '158a', 
      [name] => '***', 
     ) 

Benötigen Sie die Zifferntasten kopieren (0, 1) für die Array-Werte ('157a', '158a'):

Array 
(
    [157a] => Array 
      (
       [id] => '157a', 
       [name] => '***', 
      ) 

    [158a] => etc 

Was ist der effizienteste Weg, dies zu erreichen?

+0

Suchen Sie erstellen das 2. Array vom 1. Array? – FatBoyXPC

+0

Anstatt zu versuchen, das vorhandene Array zu ändern, habe ich gerade ein neues Array im erforderlichen Format erstellt ... Schön und einfach. – user2417713

Antwort

0

weiß nicht, ob es der effizienteste Weg, aber ich würde so etwas tun:

$newArray = []; 
foreach($array as $v) 
{ 
    $newArray[$v['id']] = $v; 
} 
+0

Es geht also nur darum, ein neues Array zu erstellen, anstatt den Schlüsselnamen in einem vorhandenen Array zu bearbeiten. – user2417713

0

Sie array_column dafür verwenden können:

array_column($input, $item, 'id'); 

Oder können Sie array_reduce verwenden zu tun, dass in eine funktionale Programmierung.

$changedArray = array_reduce($input, function ($result, $item) { 
    $result[$item['id']] = $item; 
    return $result; 
}, array()); 
var_dump($changedArray); 
1

Pass null als zweiten Parameter zu array_column() die gesamte Untergruppe zu erhalten und id als dritte indizieren das Array mit den Werten dieser Spalte übergeben:

$array = array_column($array, null, 'id'); 
Verwandte Themen