将3个阵列合并为一个

时间:2018-08-24 03:54:31

标签: php arrays merge

我有一个类似下面的数组的数组,我想将该数组与另外2个数组合并。我已经尝试过使用数组合并功能,但是失败了,您能建议其他方法吗?

(
    [0] => stdClass Object
        (
            [field_name] => mem_goup_name
            [table_name] => membership_group
            [field_id] => 15
        )

    [1] => stdClass Object
        (
            [field_name] => mem_group_description
            [table_name] => membership_group
            [field_id] => 17
        )


)

我想将这2个数组设置为以前的数组

Array
(
    [fiter_15] => 5
    [fiter_17] => 2
)
Array
(
    [operator_15] => 3
    [operator_17] => 1
)

意思是这样(数字的键必须等于field_id)。

    [0] => stdClass Object
        (
            [field_name] => mem_goup_name
            [table_name] => membership_group
            [field_id] => 15,
            [fiter_15] => 5,
            [operator_15] => 3
        )

    [1] => stdClass Object
        (
            [field_name] => mem_group_description
            [table_name] => membership_group
            [field_id] => 17,
            [fiter_17] => 2,
            [operator_17] => 1
        )

这是我到目前为止尝试过的。

$operator = array(); 
$filter = array(); 
$field_ids = array();

 foreach ($fitered_values as $key => $value) { 

  if (strpos($key, 'operator_') !== false) {
  $operator[$key] = $value; 
  }

  if (strpos($key, 'fiter_') !== false) {
  $filter[$key] = $value; 
  } 

  if (strpos($key, 'field_ids_') !== false) { 
  $field_ids[$key] = $value; 
  } 

} 

2 个答案:

答案 0 :(得分:2)

您可以循环第一个数组并使用preg_grep查找键。
我grep array2的array_keys和输出相交以获得数组项。
然后将其合并到主array1中。

$arr2 = array_merge($filter, $operator);

foreach($arr1 as $key => $item){
    $temp = preg_grep("/.*_" . $item['field_id'] . "/", Array_keys($arr2));
    $arr1[$key] = array_merge($arr1[$key] , array_intersect_key($arr2, array_flip($temp)));
}
var_dump($arr1);

https://3v4l.org/3Inbb

为什么还有两个帐户?
filter array by string and separate in to 2 arrays

答案 1 :(得分:0)

请检查以下内容,让我知道它是否适合您。

onSelect() {
    this.table_data = document.getElementById("just_a_table");
    for (var i=1, row; row = this.table_data.rows[i]; i++){
        for (var j=0, cell; cell = row.cells[j]; j++){
            if (cell[1].children[0].checked){
                console.log("It is checked");
            }
        }
    }
}