【问题标题】:Iterate two arrays and find specific key/value and put into a new single array迭代两个数组并找到特定的键/值并放入一个新的单个数组中
【发布时间】:2016-05-13 04:56:06
【问题描述】:

我正在尝试从变量 $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。

【问题讨论】:

    标签: associative-array


    【解决方案1】:

    试试这个

    function only ($array, $keys) {
      return array_intersect_key($array, array_flip((array) $keys));
    }
    
    $the_array[] = only($form_id, ['title', ''id]);
    

    如果你有多个 form_id 就使用循环

    【讨论】:

    • 结果和我用的foreach循环一样。我返回两个数组,索引都设置为 [0]。请参阅我描述中的最后一个示例。所以你和我的方法都产生相同的结果。
    • form_id是数组还是多维数组?
    • 不,请参阅我的问题中的第一个示例。
    • 无论我做什么,我都无法将结果放入单个索引数组中。
    • 请仅添加 print_r($form_id) 数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2021-12-07
    • 2019-06-11
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多