【问题标题】:Merge variables合并变量
【发布时间】:2010-08-05 04:54:06
【问题描述】:

我们有 $id$title 变量,它们每次都会改变。

对于每个$id,我们应该创建一个新变量$temp_title_%id%,并赋予它$title的值。

喜欢:

$id = 10;
$title = 'Hello people!';
$temp_title_10 = 'Hello people!';

试过这个(不起作用):

$temp_title_ . $id = $title;

谢谢。

【问题讨论】:

标签: php merge


【解决方案1】:

改用数组怎么样?数组是存储多个值的更好方法。好多好多,好多好多了。

$title_array = array();

$id = 10;
$title = 'Hello people!';
$title_array[$id] = $title;

【讨论】:

    【解决方案2】:

    如果您尝试持久化您的变量,如果您的 $id 变量始终是一个整数,那么将它们放在一个数组中可能会更好。

    $persistence_array = array();
    
    while (some_requirement) {
        $id = ...;
        $title = ...;
        $persistence_array[$id] = $title;
    }
    

    如果$id 也可能包含字母数字数据,那么您始终可以以相同的方式使用哈希/字典(通过少量附加逻辑,您甚至可以为同一个 id 存储多个值)。

    不要这样做:如果你绝对必须有变量,那么你可以使用variable variables 但请不要这样做。

    【讨论】:

      【解决方案3】:

      使用这个:

      $metavariable = "temp_title_".$id;
      $$metavariable = $title;  // note the $$
      

      【讨论】:

        【解决方案4】:
        ${'temp_title_' . $id} = $title;
        echo $temp_title_10;
        

        【讨论】:

          【解决方案5】:

          我认为做你想做的事情是个坏主意,但无论如何,这里是如何做的:

          $GLOBALS["temp_title_".$id]=$title;
          

          或者,您可以这样做:

          $varname="temp_title_".$id;
          $$varname=$title;
          

          我认为您正在尝试做的最正确的方法是使用数组:

          // Somewhere in the PHP script:
          $an_array=array();
          
          // To assign:
          $an_array[$id]=$title;
          
          // To retrieve:
          echo $an_array[$id];
          

          【讨论】:

          • 第一种方法很危险。它不会在函数内部工作,并且会与全局变量混淆。
          • 我同意...这是个坏主意。我想不出一个有意义的用例。
          • @Sebastián:我知道,这也是我列出第二种方法的原因。
          【解决方案6】:

          使用 PHP 的变量变量 http://php.net/manual/en/language.variables.variable.php

          $variable = $title.'_'.$id
          $$variable = 'hello, world!'
          

          【讨论】:

            猜你喜欢
            • 2011-09-17
            • 2013-09-25
            • 1970-01-01
            • 1970-01-01
            • 2018-07-29
            • 2015-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多