迭代两个数组并找到特定的键/值并放入一个新的单个数组中

时间:2016-05-13 04:56:07

标签: associative-array

我正在尝试从变量$ form_id中提取一个键及其值,并将结果放入一个新变量$ the_array。

当屏幕上的print("<pre>".print_r($form_id,true)."</pre>");看起来像这样:

<pre>Array
(
  [title] = Contact Us
  [description] =
  [labelPlacement] = top_label
  [id] = 2
)</pre>
"NULL Array"

<pre>Array
(
  [title] = Test
  [description] =
  [labelPlacement] = top_label
  [id] = 3
)</pre>
"NULL"

我想要新的数组$ the_array:

Array(
  [0] => Array(
    [title] => Contact Us
    [id] => 2
  )
  [1] => Array(
    [title] => Test
    [id] => 3
  )
)

这是我的代码:

$ii = 0;

foreach ( $form_id as $gf_key => $form_id_value ) {

    if ( $gf_key == 'title' ) { 

        $the_array[$ii] = array( 
            'title' => $form_id['title'],
            'id' => $form_id['id'] 
        );                                      
    }       
    $ii++;              
}

但我得到的是两个数组:

<pre>Array
(
  [0] = Array
    (
      [title] = Contact Us
      [id] = 2
    )
)
</pre>
"NULL Array"

<pre>Array
(
  [0] = Array
    (
      [title] = Test
      [id] = 3
    )
)
</pre>
"NULL"

如果我回显$ ii,它会在$ form_id中迭代第一个数组时增加,然后在$ form_id中迭代第二个数组时重置为0。

1 个答案:

答案 0 :(得分:0)

试试这个

function only ($array, $keys) {
  return array_intersect_key($array, array_flip((array) $keys));
}

$the_array[] = only($form_id, ['title', ''id]);

如果您有多个form_id,只需使用循环