【问题标题】:Get index of array in foreach loop在foreach循环中获取数组的索引
【发布时间】:2015-10-15 17:28:18
【问题描述】:

鉴于:

foreach ($rows as $row) {
    echo $row['id'];
    echo $row['firstname'];
    echo $row['lastname'];
}

如何在任何给定的迭代期间获得$rows 的当前索引,没有单独的计数变量

我尝试了什么:

foreach ($rows as $key => $row) {
    echo $row['id'];
    echo $row['firstname'];
    echo $row['lastname'];
}

在下面编辑

但是$key 给了我$row 的当前索引,而不是$rows 的当前索引。

我想做的是:

foreach ($rows as $row) {
    if(current_index($rows) == 0){
        // do something
    }
    echo $row['id'];
    echo $row['firstname'];
    echo $row['lastname'];
}

据我所知,PHP 没有 current_index() 函数或类似的东西。

$rows 是这样的:

Array
(
    [0] => Array
        (
            [id] => 1
            [firstname] => Firstname one
            [lastname] => Lastname one
        )

    [1] => Array
        (
            [id] => 2
            [firstname] => Firstname two
            [lastname] => Lastname two
        )

    [2] => Array
        (
            [id] => 3
            [firstname] => Firstname three
            [lastname] => Lastname three
        )
)

【问题讨论】:

  • 1) 您是否在循环中回显了$key,您确定这不是您想要的吗? 2)请用数组做一个小例子,你现在得到什么作为输出和你期望得到什么
  • 这个好像不清楚But this gives me the current index of $row, not the current index of $rows.
  • @Exception throw new Exception("Unclear question");
  • @Rizier123 查看我的编辑
  • @FastTrack 否,$key 是您正在迭代的 $rows 的当前索引。 (((否则使用显示的示例数组作为当前输出 + 预期输出的示例))

标签: php arrays foreach


【解决方案1】:

您将数组 value 引用为数组。这就是为什么它给你$row['id']

您需要使用$key,因为这是$rows 数组中当前索引的值。

当您使用 foreach($rows as $key => $row) 时,它实际上是这样做的:

  • $rows - 要循环的输入数组
  • $key - 第一维数组中您当前位置的键
  • $row - 您当前位置在第一维数组中的值

【讨论】:

  • 如果数组包含字符串键怎么办?
  • 我这是他要求的整数键,例如 1,2,3,而不是字符串索引
  • 它仍然适用于字符串索引。它不会是 0、1、2.. 等等。它将是关联索引。
【解决方案2】:

$key 将给出当前数组键,它可能是字符串,所以我认为以下可能的解决方案

$i=0;
foreach ($rows as $key => $row) { 
echo $row['id']; 
echo $row['firstname']; 
echo $row['lastname']; 
echo $i;
$i++;
}

【讨论】:

  • 正如我的问题中所述,我想在不使用单独的计数变量的情况下完成此操作。
【解决方案3】:

使用关联数组

$rows = array("id"=>"id","firstname"=>"firstname","lastname"=>"lastname")
foreach ($rows as $key=>$row) {
    if($key == "firstname"){ 
        // do something
    }
}

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2010-11-29
    • 2014-09-12
    • 1970-01-01
    • 2018-04-14
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多