【问题标题】:how to create a variable for every element in an array如何为数组中的每个元素创建一个变量
【发布时间】:2018-08-09 05:21:27
【问题描述】:

我有一个数组

$locations = [ 'name1', 'name2', 'name3', 'name4' ]

现在我想创建变量 $location1, $location2,...

将分别保存 name1、name2、.... 的值(即 $location1 = 'name1'、$location2 = 'name2'、..... 等等

每当管理员添加新位置时,数组就会更新,因此必须自动创建另一个变量来保存数组中新位置的名称。

可以用php. 这样做的原因是我需要访问这些变量并将它们的值分配给 javascript 变量以在地图中显示它们的名称。

任何帮助将不胜感激。

【问题讨论】:

  • 不知道为什么要这样做,这正是数组的用途,但是(我不推荐这样做)-stackoverflow.com/questions/25593055/…
  • 另外,您应该重新考虑您自己写的内容:“只要管理员添加新位置,数组就会更新”......更改某些内容的“管理员”不会直接修改执行脚本中的任何值。请记住,由 php 脚本提供的请求是在单独的进程或线程中处理的。所以对我来说,当你从一些你不想使用的资源中获取一些数组时,这看起来就像你首先有一个重大的设计缺陷。
  • 我将需要访问这些变量并将它们的值分配给 javascript 变量 如果您不知道存在哪些变量,您将如何做到这一点?使用动态创建的变量可以做的任何事情几乎总是可以使用数组更轻松地完成。

标签: php


【解决方案1】:

如果你想要单个变量,那么你可以使用这个程序。

<?php

$locations = ['name1', 'name2', 'name3', 'name4'];

$alocation = array();
$i = 1;
foreach ($locations as $key => $value) {
  $alocation['location' . $i] = $value;
  $i++;
}
extract($alocation);
echo '<pre>'; print_r($alocation); echo '</pre>';
echo $location1 . '--' . $location2 . '--' . $location3 . '--' . $location4;
?>

【讨论】:

  • 谢谢我已经更新了动态数组值的答案
【解决方案2】:

试试这个

$l = array('name1', 'name2', 'name3', 'name4');
$length = sizeof($l);
for ($i = 0; $i < $length; $i++){
    ${"location".($i+1)} = $l[$i];
}
echo "$location1<br />$location2<br />$location3<br />$location4<br />";

输出

名称1 名称2 名称3 名字4

【讨论】:

    【解决方案3】:

    您可以初始化动态变量或使用extract函数。

    用于创建动态变量的代码段。

    $locations = [ 'name1', 'name2', 'name3', 'name4' ];
    foreach ($locations as $key => $val){
    ${'location'.($key +1)} = $val;
    }
    echo $location3;
    

    输出:

    name3
    

    直播demo

    带前缀的摘录片段

    $locations = [ 'name1', 'name2', 'name3', 'name4' ];
    extract ($locations, EXTR_PREFIX_ALL, 'location');
    echo $location_1;
    

    输出:

    name2
    

    直播demo

    注意:前缀从零开始,带下划线。 提取Docs

    【讨论】:

      【解决方案4】:

      抱歉,各位花在这个问题上的时间。 我只需要从 php 到 javascript 获取一个数组

      下面的代码就是这样做的

      <?php $location = [....some values in this array...]; ?>
      
      <script>var name = <?php echo json_encode( $location ) ?>;</script>
      

      现在每当更新php脚本中的数组时,javascript中的数组就会自动更新。

      这就是我想要的。

      也感谢你们投反对票。

      你们太棒了(继续努力)

      【讨论】:

        【解决方案5】:

        我不知道您为什么要这样做,但我认为最好的方法是使用 JSON 对象,这样您就可以将数组转换为 JSON(json_encode,json_decode)非常简单,之后您可以处理任何您想要的方式.

        【讨论】:

        • JSON 与变量变量有什么关系? JSON 用于序列化数据以便传输或保存,与创建新变量无关。
        • “原因是我需要访问这些变量并将它们的值分配给 javascript 变量,以便在地图中显示它们的名称。”你认为这是最好的方法吗?在这种情况下,这些变量绝对没有必要。
        • 我同意,请参阅我对问题本身发表的评论。但是,如果您要回答这个问题,请按照他们的要求回答。
        • 你在说var locations = &lt;?php echo json_encode($locations); ?&gt;;之类的东西吗?您应该在答案中显示这一点,而不是对函数的倾斜引用。
        • 我没有看到你的评论 sry,但我不同意你句子的第二部分,因为我认为我们应该展示正确的方式 :) 只做一个注释 :P 现在如果我们更好使用“let”而不是“var”(ES6)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 2019-01-07
        • 1970-01-01
        相关资源
        最近更新 更多