2017-04-26 63 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