我正在寻找调用多个字符串并将它们连接成一个字符串.我希望能够检查所有被调用的字符串是否都已设置,而不必使用isset();.每个使用的字符串.
我理想地希望拥有:
<?PHP
$name = "John Smith";
$age = "106";
$favAnimal = "pig";
$email = "john@smith.com";
$sport = "tennis";
$userDescription = "My name is $name, I am $age years old, I like $sport.";
if(allStringsSet($userDescription)){
echo $userDescription; //Or do something else
}
?>
您会注意到,我没有调用所有字符串,因为在我的应用程序中,并非所有字符串都会一直使用.我的应用程序还将从大约50个字符串中进行选择,而我需要能够检查是否有任何setset,而不会到处都是isset(); s.
我希望在声明$userDescription之前需要进行isset检查.如何检查一组未知的字符串以查看是否已设置?
解决方法:
使用带有自定义getter和setter的对象.
class CustomStrings()
{
protected $data;
public function __set($key, $value) {
$this->data[$key] = $value;
}
public function __get($key) {
if (isset($data[$key])) {
return $data[$key];
}
return false;
}
public function getDescription($description) {
// regex to find the words following : (or any other char)
// look for the variables, and do whatever handling you want if they're not found
// return whatever you want
// IF you don't want to do a regex, you can do the following
foreach ($this->data as $key => $value) {
$description = str_replace(":$key", $value, $description);
}
if (strpos(':', $description) !== FALSE) {
return $description;
}
return false; // or whatever error handling you want
}
}
$strings = new CustomStrings();
$strings->name = 'John';
$strings->age = 16;
$strings->sport = 'Football';
$description = $strings->getDescription("My name is :name, I am :age years old, I like :sport");
您将使用适当的键将所有变量存储在CustomStrings对象中,而不是写入$name,而是写入:name.
您只能在getDescription函数中执行一次isset处理.
因为我很懒,所以我没有写正则表达式.如果要在字符串中使用:,请将其替换为不需要的内容.
祝好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。