Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在考虑空变量的情况下创建字符串?_Php_Variables_If Statement - Fatal编程技术网

Php 如何在考虑空变量的情况下创建字符串?

Php 如何在考虑空变量的情况下创建字符串?,php,variables,if-statement,Php,Variables,If Statement,我试图为一个页面构建一个占位符元描述,以防用户没有在CMS中包含描述 我从下面的代码开始,但是如果任何其他变量也为空,例如$phone,$location['zip']等等,它当然会失败 <?php if (!empty($description)) { echo '<meta name="description" content="' .$description . '">'; } else { // Should return: Apple is a

我试图为一个页面构建一个占位符元描述,以防用户没有在CMS中包含描述

我从下面的代码开始,但是如果任何其他变量也为空,例如
$phone
$location['zip']
等等,它当然会失败

<?php   
if (!empty($description)) {
    echo '<meta name="description" content="' .$description . '">';
}
else {
    // Should return: Apple is a business located in Palo Alto, 95014. Call 408.996.1010...
    $description = $name . ' is a ' . strtolower($category) . ' located in ' . $location['city']  . ', ';
    $description .= $location['zip'] . '. Call ' . $phone . ' for more details today.';
    echo '<meta name="description" content="' . $description . '">';        
} ?>


以这种方式构建描述最有效的方法是什么?目前,我只能想到嵌套的if语句,这听起来很混乱,我相信一定有一种干净的方法可以做到这一点。

由于描述是根据输入而变化的,所以将其放入自己的函数或类中以封装它:

/**
 * build a description based on various input variables
 * @return string
 */
function build_description($description, $name, $category, array location, $phone) {
   // build the description as you see fit.
}

$description = build_description(compact('description', 'name', 'category'));
$metaDescription = sprintf('<meta name="description" content="%s"', htmlspecialchars($description));
/**
*基于各种输入变量构建描述
*@返回字符串
*/
函数构建描述($description,$name,$category,array location,$phone){
//按照您认为合适的方式构建描述。
}
$description=构建描述(compact('description','name','category');

$metaDescription=sprintf(“由于描述是根据输入而变化的,所以将其放入自己的函数或类中以封装它:

/**
 * build a description based on various input variables
 * @return string
 */
function build_description($description, $name, $category, array location, $phone) {
   // build the description as you see fit.
}

$description = build_description(compact('description', 'name', 'category'));
$metaDescription = sprintf('<meta name="description" content="%s"', htmlspecialchars($description));
/**
*基于各种输入变量构建描述
*@返回字符串
*/
函数构建描述($description,$name,$category,array location,$phone){
//按照您认为合适的方式构建描述。
}
$description=构建描述(compact('description','name','category');

$metaDescription=sprintf(“定义的其他变量不应该是字符串,而应该是对象的一部分,例如…Description。 在这种情况下,调用Description->isEmpty()会更容易,如果其中一个变量为空,则该函数将返回true

如果您一直使用此配置,您仍然可以制作阵列: $myArray=array($name,$category,…);
并检入一个循环,或者可能返回in_数组(“”,$myArray)

定义的其他变量不应该是字符串,而应该是对象的一部分,例如…Description。 在这种情况下,调用Description->isEmpty()会更容易,如果其中一个变量为空,则该函数将返回true

如果您一直使用此配置,您仍然可以制作阵列: $myArray=array($name,$category,…);
并检查一个循环或可能返回in_数组(“”,$myArray)

添加一个函数来检查是否设置了值

i、 e


是否添加一个函数来检查是否设置了值

i、 e


我不明白“但是如果其他变量也为空,它当然会失败。”-请重新表述为什么听起来很混乱?我不明白“但是如果其他变量也为空,它当然会失败。”-请重新表述为什么听起来很混乱?我本来计划将其作为类中的一个方法,但它仍然无法解决传递给它的一个参数为空时会发生什么的问题。我本来计划将其作为类中的一个方法,但它仍然无法解决传递给它的一个参数为空时会发生什么的问题.