在foreach语句中,我想查看某个数组元素是否已更改。如果没有,请递增我的计数器。如果是这样,请回到一个。是否有捷径可寻?类似......
$position = 1;
foreach( $rowDatas as $row )
{
//insert $row into db;
if( ! hasChanged($row[0]) )
{
$position = $postion + 1;
}
else
{
$position = 1;
}
}
答案 0 :(得分:0)
无法找到任何可以做我想做的功能,所以我创建了一些解决方法。 $ rowDatas [2] [0];是我想要比较的第一个元素。
$position = 0;
$a = $rowDatas[2][0];
try
{
foreach( $rowDatas as $row )
{
if( $row[0] == $a ){
$position++;
}
else {
$position = 1;
$a = $row[0];
}
$stmt = $dbh->prepare('INSERT INTO Sandbox (row0, row1, row2, Position) VALUES (?, ?, ?, ?)');
$stmt->bindParam(1, $row[0], PDO::PARAM_STR);
$stmt->bindParam(2, $row[1], PDO::PARAM_STR);
$stmt->bindParam(3, $row[2], PDO::PARAM_INT);
$stmt->bindParam(4, $position, PDO::PARAM_INT);
$status = $stmt->execute();
}
答案 1 :(得分:0)
我建议您使用array_diff,当且仅当您不关心行内的哪个项被修改时。
$a = $rowDatas[2];
foreach( $rowDatas as $row ) {
if (array_diff($a, $row)) {
$position++;
// ...
}
}