我不确定它是否也是定义此问题的正确方法。
我有可能存在的字符串,也可能不存在。它恰好是一个数字:$number
如果$number
不存在,那么我想使用PHP变量$url
。
但如果确实存在$number
,那么我想使用名为$url+the number
的PHP变量,即$url2
$number=2
所以我尝试了这段代码,但它不起作用:
$number = "2"; //(Can be either missing, or equal to 1, 2, or 3)
$url = "www.0.com"; // Fallback
$url1 = "www.1.com";
$url2 = "www.2.com";
$url3 = "www.3.com";
$result = $url.=$number ;
// If $number=1, I want $result to be : www.1.com
// If $number=2, I want $result to be : www.2.com
// If $number=3, I want $result to be : www.3.com
// If $number IS NOT SET, I want $result to be : www.0.com
// Now do something with $result
或许有更好的方式来实现我想要的东西(很乐意看到例子),但无论如何我也很好奇,也要了解如何以我的方式实现它。
答案 0 :(得分:2)
好的,所以你在谈论variable variable。
您应该在字符串中定义需要使用的变量的名称,然后使用$$
语法将其传递给变量:
if( isset($number) && is_numeric($number) )
{
$name = 'url'.$number;
$result = $$name;
}
else
{
$result = $url;
}
有人说过,你可能最好使用数组:
$urls = [ 'www.0.com', 'www.1.com', 'www.2.com', 'www.3.com' ];
$result = (!isset($number)) ? $urls[0] : $urls[ intval($number) ];
答案 1 :(得分:0)
如果你添加$
字符串前面,它定义变量,所以你可以使用以下代码:
<?php
$number = "2"; //(Can be either missing, or equal to 1/2/3)
$url = "www.0.com"; // Fallback
$url1 = "www.1.com";
$url2 = "www.2.com";
$url3 = "www.3.com";
if(isset($number) && is_numeric($number) && $number <= 3) {
$variable_name = 'url' . $number; //string like url2
} else {
$variable_name = 'url';
}
$result = $$variable_name ; //define $url2 from url2 string
echo $result;
// Now do something with $result
使用字符串变量定义变量的示例:
$string = 'hello';
$$string = 'new variable'; //define $hello variable
echo $hello; //Output: "new variable"
答案 2 :(得分:0)
您可以将{tnary与in_array
和empty
一起使用。
$number = "2"; //(Can be either missing, or equal to 1, 2, or 3)
$url = "www.0.com"; // Fallback
$url1 = "www.1.com";
$url2 = "www.2.com";
$url3 = "www.3.com";
$result = (!empty($number) && in_array($number, array(1,2,3))) ? ${'url' . $number} : $url;
echo $result;
答案 3 :(得分:0)
在php中,您可以使用动态变量名称:
$variableName = "url".$number;
$result = $$variableName;
但是,您应该确保$ variableName引用现有变量:
$result = "www.fallbackURL.com";
if(isset($$variableName)) $result = $$variableName;
答案 4 :(得分:0)
或尝试此代码:
$number = 5;
$url[0] = "www.0.com"; // Fallback
$url[1] = "www.1.com";
$url[2] = "www.2.com";
$url[3] = "www.3.com";
if (!isset($number)) $number=0;
if (!isset($url[$number])) $number=0;
$result = $url[$number];
答案 5 :(得分:0)
如果网址只需要一个数字,就可以轻松完成
($number)?$number:0;
$url = "www.".$number.".com";
如果有特定的真实网址,则可以使用数组
$array[0] = "www.google.com";
$array[1] = "www.facebook.com";
($number)?$number:0;
url = $array[$number];
答案 6 :(得分:-2)
更新的代码:
$number = "2";
if(isset($number)){
$res = "url".$number;
$result=$$res;
}else{
$result=$url;
}
echo $result;