我经常搜索,但我没有找到正确的解决方案。
我有一个名为“我的名字”的客户字段。这个客户字段可以添加到帖子中(多一次)或不添加。
$my_name = get_post_custom_values( 'My-Name' );
foreach ( $my_name as $my_name )
echo $my_name;
我的问题 - 如果帖子上没有此密钥,我会收到错误(警告:为foreach()提供的参数无效)。
我不想要这个错误消息,如果该帖子上没有该密钥,我想要一个“else = html text”。我尝试了一些if / else,但我的PHP技能太低而无法成功。有人能帮助我吗?
更新:
我已经从dingo_d修改了脚本,现在它可以工作了 - thx!
$my_name = get_post_custom_values( 'My-Name' );
if(is_array($my_name) && !empty($my_name)){
foreach($my_name as $my_name){
echo $my_name . "\n";
}
} else{
echo 'My text';
}
答案 0 :(得分:0)
取决于get_post_custom_values()将在缺少的POST参数上返回的内容,只需检查要设置的参数或为空:
if (isset($my_name))
{
foreach(...) ...
}
VS
if (!empty($my_name))
{
foreach(...) ...
}
顺便说一句:if-else-construct不是循环; - )
答案 1 :(得分:0)
在进入foreach循环之前,请务必检查变量是否填充了某些内容。这也取决于您期望的回报类型。我会做类似的事情:
if(is_array($my_name) && !empty($my_name)){
foreach($my_name as $value){
echo $value;
}
} else{
echo 'My text';
}
这是因为您的$my_name
变量应该返回一个数组。如果您的返回值是字符串,您将检查它是否已设置以及它是否为
if(isset($my_variable) && $my_variable != ''){...}
答案 2 :(得分:0)
$my_name = get_post_custom_values( 'My-Name' );
if(isset($my_name))
{
foreach ( $my_name as $my_name ){
echo $my_name;
}
}else{
echo "html goes here";
}