$headers=array(
$requestMethod." /rest/obj HTTP/1.1",
"listable-meta: ".$listablemeta,
"meta: ".$nonlistmeta,
'accept: */*',
);
在上面的示例中,如果$listablemeta或$nonlistmeta为空,我想省略整行.
假设$listablemeta为空.那么该数组将是:
$headers=array(
$requestMethod." /rest/obj HTTP/1.1",
"meta: ".$nonlistmeta,
'accept: */*',
);
现在,我可以设置一个条件isempty()并相应地设置数组,但是如果我想构造一个具有20个不同值的数组,并且仅在每行变量都不为空的情况下进行设置,那还有另一种方法来设置条件-内-数组声明?如果没有,解决该问题的另一种方法是什么?
谢谢!
解决方法:
您无法在array子句中执行任何有助您解决此问题的条件,但这应满足您的需求:
如果要传递给数组的标头如下:
$requestMethod = 'GET';
$listablemeta = ''; // This shouldn't be in the final result
$nonlistmeta = 'non-listable-meta';
建立这些变量的键/值数组:
$headers = array(
0 => $requestMethod." /rest/obj HTTP/1.1",
'listable-meta' => $listablemeta,
'meta' => $nonlistmeta,
'accept', '*/*'
);
请注意,如果该值没有requestMethod中的键,则只需在其中放置一个数字值即可.然后遍历它们并构建最终数组:
function buildHeaders($headers) {
$new = array();
foreach($headers as $key => $value) {
// If value is empty, skip it
if(empty($value)) continue;
// If the key is numerical, don't print it
$new[] = (is_numeric($key) ? '' : $key.': ').$value;
}
return $new;
}
$headers = buildHeaders($headers);
$header现在应该包含以下内容:
$headers = array(
'GET /rest/obj HTTP/1.1',
'meta: non-listable-meta-here',
'accept: */*'
);
标签:conditional,arrays,php
来源: https://codeday.me/bug/20191106/2001942.html