在一条语句中分配和读取PHP中的数组项

在一条语句中分配和读取PHP中的数组项,php,arrays,Php,Arrays,我试图用某种优雅的方式来实现一个一体化的while循环子句,但我不确定这是否可行 首先,我有一个由CSV生成的二维数组。大概是这样的: 1 2 3 4 1 2 3 4 2 5 2 3 A 1 1 1 让我们称之为$arr 我想从某个$index开始遍历数组,并在找到第0个元素不是数字的第一行时停止。假设我们从$arr[1]开始,它将运行$arr[1]和$arr[2]的循环,但将停止在$arr[3],因为$arr[3][0]不是一个数字 以下是到目前为止我得到的信息: w

我试图用某种优雅的方式来实现一个一体化的while循环子句,但我不确定这是否可行

首先,我有一个由CSV生成的二维数组。大概是这样的:

1  2  3  4
1  2  3  4
2  5  2  3
A  1  1  1
让我们称之为
$arr

我想从某个
$index
开始遍历数组,并在找到第0个元素不是数字的第一行时停止。假设我们从
$arr[1]
开始,它将运行
$arr[1]
$arr[2]
的循环,但将停止在
$arr[3]
,因为
$arr[3][0]
不是一个数字

以下是到目前为止我得到的信息:

while ( is_numeric( ($row = $arr[++$index])[0] ) )
我不喜欢尝试访问括号内该赋值的第0个元素:

($row = $arr[++$index])[0] //Unexpected '['

我猜括号内的内容不会返回我所期望的结果,或者PHP不支持这种语法。是否有一种方法可以将数组元素分配给另一个变量,并在同一语句中读取该变量?

无论您使用何种技术来标识非数字的第一列值,只要保留递增变量即可

这里有一个方法:

代码:()

输出:

Halted on row index: 3
array (
  0 => 'A',
  1 => 1,
  2 => 1,
  3 => 1,
)

为什么不干脆
while($row=$arr[+$index])&&is_numeric($row[0])
?这在PHP7中运行良好,只有旧的、大量过时的5分支版本才会抛出此错误-。如果你仍在使用其中任何一种,为什么不直接朝自己的脚开枪,这样可以节省时间:-)没有什么理由不这样做。我在其他语言中也做过类似的事情,当它在PHP中抛出一个错误时,我很惊讶。我想看看是否有一种方法只使用一个子句就可以做到这一点。@04FS真的吗?只是因为PHP版本?不幸的是,我无法控制我们工作中的服务器使用的是什么版本的PHP。如果您在生产中使用的任何服务器仍然使用PHP5,那么是时候升级它们,或者立即关闭它们了-5分支甚至不再获得安全修复。如果这不是一个选项,由于{在这里插入假装虚假的原因},那么您必须编写不那么“花哨”的代码,就这么简单。
Halted on row index: 3
array (
  0 => 'A',
  1 => 1,
  2 => 1,
  3 => 1,
)