如何将字符串添加到PHP变量?

时间:2017-06-24 13:08:57

标签: php

我不确定它是否也是定义此问题的正确方法。

我有可能存在的字符串,也可能不存在。它恰好是一个数字:$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

或许有更好的方式来实现我想要的东西(很乐意看到例子),但无论如何我也很好奇,也要了解如何以我的方式实现它。

7 个答案:

答案 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_arrayempty一起使用。

$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;

演示:https://eval.in/821737

答案 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;