【问题标题】:How to access an array element without assigning an array variable?如何在不分配数组变量的情况下访问数组元素?
【发布时间】:2013-10-24 20:31:22
【问题描述】:

例如:

echo explode('@',$var); //but only echoing element 1 or 2 of the array?

代替:

$variable = explode('@',$var);
echo $variable[0];

谢谢。

【问题讨论】:

  • 投反对票的人能解释一下自己吗?
  • Explode 将字符串转换为数组。数组元素是字符串时如何访问它?
  • 我确实尝试过解决问题,但无济于事。我有大约 6 个月的 PHP 经验,我读过的关于如何解决这个问题的内容没有任何突出之处。
  • @OBV:这是一个使用 list() 的演示,它不使用临时变量或额外的函数调用 -- eval.in/54886

标签: php


【解决方案1】:

像这样使用reset

echo reset(explode('@', $var));

【讨论】:

  • 我在发布之前做了一个测试......它对我有用! exit(reset(explode('-', 'it-is-my-test')));
【解决方案2】:

从 PHP 5.4 开始,您可以编写:

echo explode('@', $var)[0];

在 PHP 的早期版本中,您只能通过技巧来实现该行为:

echo current(explode('@', $var)); // get [0]
echo next(explode('@', $var));    // get [1]

如果没有临时变量,则无法在任意位置检索元素。


如果你不想每次都使用变量,这里有一个简单的函数可以整理你的代码:

function GetAt($arr, $key = 0)
{
    return $arr[$key];
}

调用方式:

echo GetAt(explode('@', $var));    // get [0]
echo GetAt(explode('@', $var), 1); // get [1]

【讨论】:

  • 技术上这是可能的,你可以这样做echo current(explode('@', $var));
  • 这些相同的技巧在
  • @OBV 是的,这种行为在 5.4 及更高版本中应该仍然有效。不过,最安全的赌注可能是一个临时变量。
  • @OBV 你的第一个@前面没有任何东西,所以current()返回一个空字符串。
  • 让我们希望,没有人会从字面上理解最底层的例子。因为它会完全无效(:
【解决方案3】:

在支持数组解引用的 PHP 版本上,您可以使用以下语法:

echo explode('@', $var)[0];

如果没有,你可以使用list()

list($foo) = explode('@', $var);

上面的语句将在变量$foo中分配爆炸数组的第一个值。

【讨论】:

    【解决方案4】:

    在 PHP 5.4 之前,您可以这样做:

    echo array_shift(explode('@', $var));
    

    这将回显由explode 创建的数组的第一个元素。但是这样做并没有错误检查explode的输出,这并不理想。

    【讨论】:

      【解决方案5】:

      list也可以这样使用:

      list($first) = explode('@', $var);
      list(,$second) = explode('@', $var);
      list(,,$third) = explode('@', $var);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-03
        • 2020-03-27
        • 1970-01-01
        • 2019-06-25
        • 2020-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多