2017-04-26 89 views
2

我有兩個陣列具有不同的長度填充陣列,含有MySQL表的字段:PHP比較和不同長度

data1: Array 
(
    [0] => Array 
     (
      [field] => dggd 
      [type] => int(11) 
      [null] => NO 
      [key] => 
      [default] => 
      [extra] => 
     ) 

    [1] => Array 
     (
      [field] => id2 
      [type] => varchar(255) 
      [null] => NO 
      [key] => PRI 
      [default] => 
      [extra] => 
     ) 

    [2] => Array 
     (
      [field] => qwee 
      [type] => int(11) 
      [null] => NO 
      [key] => 
      [default] => 
      [extra] => 
     ) 

) 
data2: Array 
(
    [0] => Array 
     (
      [field] => id2 
      [type] => int(11) 
      [null] => NO 
      [key] => PRI 
      [default] => 
      [extra] => auto_increment 
     ) 
) 

Basicly我要填充具有以下的值(與空記錄)的陣列,以匹配更大的陣列長度。另外我希望索引匹配['field']的值。

對於上的例子,我想data2轉換後是這樣的:

data2: Array 
(
    [0] => '' 
    [1] => Array 
     (
      [field] => id2 
      [type] => int(11) 
      [null] => NO 
      [key] => PRI 
      [default] => 
      [extra] => auto_increment 
     ) 
    [2] => '' 
) 

我的代碼打亂了一切,但如果你想看到它,在這裏你去https://codeshare.io/ald0pY

回答

1

創建模板空值,基於$data1中的'field'值。

$template = array_fill_keys(array_column($data1, 'field'), ''); 

重新編制$data2'field'值,並與模板合併。

$data2 = array_merge($template, array_column($data2, null, 'field')); 

如果不希望字符串鍵值,array_values將其轉換回數字鍵。

$data2 = array_values($data2); 

這種方法並假設在$data2'field'所有值出現在$data1。如果它有任何不同的值,它們將被合併到模板的末尾,並且數組的長度將不相同。

+0

謝謝,它工作得很好。順便說一句,如何比較'$ data1'和'$ data2'? '=='不起作用。 – nikolay