Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用其他数组中的值填充数组中的空值_Php_Mysql_Sql_Arrays_Pdo - Fatal编程技术网

Php 用其他数组中的值填充数组中的空值

Php 用其他数组中的值填充数组中的空值,php,mysql,sql,arrays,pdo,Php,Mysql,Sql,Arrays,Pdo,我在mysql中有两行,这些查询: SELECT * FROM `fruits_colors` WHERE `name` = "default" SELECT * FROM `fruits_colors` WHERE `name` = "example" 我得到: //result from first query $default_row = array( 'banana' => 'yellow', 'apple' => 'red', 'grape

我在mysql中有两行,这些查询:

SELECT * FROM `fruits_colors` WHERE `name` = "default"
SELECT * FROM `fruits_colors` WHERE `name` = "example"
我得到:

//result from first query    
$default_row = array(
    'banana' => 'yellow',
    'apple' => 'red',
    'grape' => 'green',
    'blueberry' => 'blue'
    'raspberry' => 'red'
);

//result from second query 
$example_row = array(
    'banana' => 'yellow',
    'apple' => 'GREEN',
    'grape' => '',
    'blueberry' => 'blue'
    'raspberry' => ''
);
所以,现在我想用默认值($default\u row)填充$example\u row中的所有空值,但不替换那些不为空的值。所以我应该得到:

$example_row = array(
    'banana' => 'yellow',
    'apple' => 'GREEN', // keep original from this array
    'grape' => 'green', // filled from $default_row
    'blueberry' => 'blue'
    'raspberry' => 'red'// filled from $default_row
);
我知道我可以使用$example_行创建foreach,检查每个键,如果值为空,则使用其他数组中的值进行设置。但是,有没有更优雅、更简洁的方法呢

  • 我可以用一些内置PHP函数连接这些数组吗
  • 也许我可以直接在SQL查询中这样做
  • 请尝试此解决方案

    $return = array();
    foreach($example_row as $k => $v) {
        if(empty($v) || ($v == "")) {
            $return[$key] = $default_row[$key];
        } else {
            $return[$key] = $v;
        }
    }
    
    var_dump($return);
    
    试试这个解决方案

    $return = array();
    foreach($example_row as $k => $v) {
        if(empty($v) || ($v == "")) {
            $return[$key] = $default_row[$key];
        } else {
            $return[$key] = $v;
        }
    }
    
    var_dump($return);
    

    您可以尝试以下方法:

    SELECT COALESCE(NULLIF(`name`,''), SELECT `name` FROM fruits_colors
     WHERE `name` = "default")
    FROM fruits_colors
     WHERE `name` = "example"
    

    您可以尝试以下方法:

    SELECT COALESCE(NULLIF(`name`,''), SELECT `name` FROM fruits_colors
     WHERE `name` = "default")
    FROM fruits_colors
     WHERE `name` = "example"
    

    如果$example\u行中的值为空,请使用$default\u行中的值进行设置。如果$example\u行中的值为空,请使用$default\u行中的值进行设置。