2016-03-22 105 views
0

我在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_row)的$ example_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 
); 

我知道我可以做的foreach與$ example_row,檢查每一個鍵和值是否爲空,則與其他數組值設定。但是,有沒有更簡潔的方法可以做到這一點?

  1. 我可以用一些內置的PHP函數連接這些數組嗎?
  2. 也許我可以直接在SQL查詢中做到這一點?

問候

回答

1

嘗試此解決方案。

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

var_dump($return); 
+0

如果在$ example_row值爲空,在$ default_row值設置。 – Cuchu

1

你可以嘗試這樣的事:

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