2

我在 PHP 中有一个关联数组

$a = array("d1" => "data", "d2" => NULL, "d3" => "data")

我想获取所有不为 NULL 的键和所有值,以便将它们内爆:

// e.g.:
$sub_key    = array_keys($a, keys != NULL);
$sub_values = array_values($a, values != NULL);

echo "`".implode("`,`", $sub_key)."`";
echo "'".implode("','", $sub_key)."'";

是否有类似array_keys()and的函数array_values()只允许采用与模式匹配的值?

4

5 回答 5

5

在使用array_keys之前使用 array_filter 并像这样过滤数组

$newArray = array_filter($a);

然后做

$sub_key    = array_keys($newArray);
$sub_values = array_values($newArray);
于 2013-05-22T10:59:29.173 回答
2

您可以使用array_filter($a),但正如上面的评论之一指出的那样,这也会过滤掉 FALSE、空字符串等值。所以我会使用 foreach 循环。

$new_array = array();

foreach ($a as $key => $value) {
    if (is_null($value) === false) {
        $new_array[$key] = $value;
    }
}
于 2013-05-22T11:04:16.073 回答
1

请试试这个:

// Loop to find empty elements and  
// unset the empty elements 
foreach($array as $key => $value)          
    if(empty($value)) 
        unset($array[$key]); 

// Display the array elements         
foreach($array as $key => $value)          
    echo ($array[$key] . "<br>"); 

在您的情况下,您将用 $a 替换 $array。这将适用于空/空键值。

于 2019-07-12T04:42:30.817 回答
1
$a = array("d1" => "data1", "d2" => NULL, "d3" => "data3");

$b = array_filter($a); // Not Null Values Array

$sub_key    = array_keys(array_filter($a));
$sub_values = array_values(array_filter($a));

echo "`".implode("`,`", $sub_key)."` <br/>";
echo "'".implode("','", $sub_values)."'";
于 2019-12-30T13:44:57.967 回答
0
$sub_key = array();
$sub_values = array();
foreach ($a as $key => $value) {
    if (!is_null($key) && !is_null($value)) { // you can also do is_empty() in stead of is_null() if you also wan't to avoid empty string
        $sub_key[] = $key;
        $sub_values[] = $value; // or use mysql_real_escape_string($value) if you are going to create a query with this! Otherwise you will create an SQL injection vulnerability here.
    }
}

// you can add if(count($sub_key)) here to only do the echoes, if there was at least 1 item in the array. Otherwise you will echo an empty ``
echo "`".implode("`,`", $sub_key)."`";
echo "'".implode("','", $sub_key)."'"; // don't you mean $sub_values here?
于 2013-05-22T11:16:45.033 回答