我正在尝试为非空键值对创建php数组(关联)声明,我从$ _POST获取。任何猜测,怎么做?
$my_array = [
"k1"=>"$val1",
"k2"=>"$val2",
"k3"=>"$val3",
"k4"=>"$val4"
];
但是,如果$ val4& $ val3为空/ NULL /确实存在,然后:
$my_array = [
"k1"=>"$val1",
"k2"=>"$val2"
];
由于
答案 0 :(得分:0)
$ _ POST已经是一个关联数组。例如,对于表单,键是元素名称'并且值是用户的输入。空输入仍会生成键/值对,但您可以使用array_filter()
轻松过滤这些键编辑:
以下是一个示例实现:
array_filter($array, function(x) {
if is_null(x) return false;
else return true;
});
答案 1 :(得分:0)
正如其他人提到的,你可以使用数组过滤器,
如果您不希望将0
的值视为空,则可以执行此类操作
$post = array_filter( $_POST, function( $item ){ return strlen( $item ); });
数组过滤器会处理0
,''
,false
,null
,我认为'0'
可能还有其他一些都是空的。您可以使用回调,例如我的示例。当回调返回false 0
时,项目在返回true(或> 0)时被删除,它将被保留。因此strlen将返回一个等于字符串长度的值,然后删除任何0
长度的字符串。
-note-这应该对$ _POST很好,因为它通常不会有任何嵌套数组,但如果有嵌套数组,那么strlen显然不能在数组上工作(在回调中是这个$item = array()
)。
答案 2 :(得分:-1)
您可以编写一个函数来检查null或空值,如下所示:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^(.*)$ /profile.php?p=$1 [R=301,L]
print_r()的输出示例:
<?php
function transform(&$data) {
foreach(array_keys($data) as $key) {
if( is_null($data[$key])
|| empty($data[$key])
) {
unset($data[$key]);
}
}
}
// usage
$data = [
"example1" => 5,
"example2" => "some text",
"example3" => null,
"example4" => [],
];
transform($data);
print_r($data);
?>