PHP的array_merge空值总是小于prioritar [英] PHP array_merge empty values always less prioritar

查看:162
本文介绍了PHP的array_merge空值总是小于prioritar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是要合并2个不同的阵列。

我有表一和安培; b的。
从表中数据A更prioritar。

问题:如果从一个关键一包含空值,我想借此从表B的一员。

下面是我的code:

 < PHP$ A =阵列('键1'=>中从prioritar KEY1,my_problem'=>中);$ B =阵列('键1'=>中key1的由少prioritar,键2'=>中为key2由少prioritar,my_problem'=>中我达到了我的目标!);$合并= array_merge($ B $ A);后续代码var_dump($合并);

有没有办法做到这一点在一个函数没有做类似下面?

 的foreach($ B $作为重点=> $值)
{
  如果(!array_key_exists($键,$ A)||空($ A [$关键])){
    美元[$关键] = $价值;
  }
}


解决方案

您可以使用 array_replace array_filter

  $ mergedArray = array_replace($ B,array_filter($ A));

其结果将是:

 阵列(3){
  [键1] =>
  串(19),从prioritar KEY1
  [KEY2] =>
  串(24)从少prioritar KEY2
  [my_problem] =>
  串(18)我达到了我的目标!
}

My goal is to merge 2 different arrays.

I have table "a" & "b". Data from table "a" are more prioritar.

PROBLEM: if a key from "a" contains an empty value, I would like to take the one from table "b".

Here is my code:

<?php

$a = array('key1'=> "key1 from prioritar", 'my_problem'=> "");

$b = array('key1'=> "key1 from LESS prioritar", 'key2'=>"key2 from LESS prioritar", 'my_problem'=> "I REACHED MY GOAL!");

$merge = array_merge($b, $a);

var_dump($merge);

Is there a way to do this in one function without doing something like below?

foreach($b as $key => $value)
{
  if(!array_key_exists($key, $a) || empty($a[$key]) ) {
    $a[$key] = $value;
  }
}

解决方案

You can use array_replace and array_filter

$mergedArray = array_replace($b, array_filter($a));

The result would be:

array(3) {
  ["key1"]=>
  string(19) "key1 from prioritar"
  ["key2"]=>
  string(24) "key2 from LESS prioritar"
  ["my_problem"]=>
  string(18) "I REACHED MY GOAL!"
}

这篇关于PHP的array_merge空值总是小于prioritar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆