Php 如何访问foreach内部的索引

Php 如何访问foreach内部的索引,php,Php,我需要检查是否有“CodProduto”,所以我做了: foreach ($movimentos['CodProduto'] as $value){} 它将运行所有CodProduto,如果它存在,我需要在foreach中执行If以检查其他两个字段: if (!$movimentos['Percentagem'] && !$movimentos['Valor'] {...} 我的问题是我不知道如何访问$movimentos['percentage']和!movimentos[

我需要检查是否有“CodProduto”,所以我做了:

foreach ($movimentos['CodProduto'] as $value){}
它将运行所有CodProduto,如果它存在,我需要在foreach中执行If以检查其他两个字段:

if (!$movimentos['Percentagem'] && !$movimentos['Valor'] {...}
我的问题是我不知道如何访问
$movimentos['percentage']
!movimentos['Valor']
项目/索引或子索引我不知道如何称呼它

$movimentos['Valor']是一个数组,我不知道如何在检查$movimentos['Percentagem']的同时检查他的项目

我知道在for中有
$movimentos['Valor'][$i]
,但我如何才能在for中为每一个都做?可能吗? 试试这个:

foreach ($movimentos['CodProduto'] as $index => $value) {
  echo $index
}

foreach
允许您指定一个变量以获取索引:

foreach ($movimentos['CodProduto'] as $index => $value) {
    if (!$movimentos['Percentagem'][$index] && !$movimentos['Valor'][$index]) {...}
}
但是,如果将所有相关数据放在单个数组中,而不是放在单独的数组中,通常会更容易。所以不是

$movimentos = [
    "CodProduto" => [...],
    "Percentagem" => [...],
    "Valor" => [...],
    "ProdutoDesignaceo" => [...]
];
这样做:

$movimentos = [
    ["CodProduto" => 1, "Percentagem" => 1, "Valor" => 2, "ProdutoDesignaceo" => "..."],
    ["CodProduto" => 2, "Percentagem" => 3, "Valor" => 4, "ProdutoDesignaceo" => "..."],
    ...
];
然后,您的循环将如下所示:

foreach ($movimentos as $m) {
    if (!$m['Percentagem'] && !$m['Valor']) {...}
}

您可以迭代项目并获取每个项目的索引。
在迭代CodProduto子数组时,使用此索引(
$i
)访问其他数组中的值

foreach($movimentos['CodProduto']作为$i=>$value){
$percentagem=$movimentos['percentagem'][$i];
$valor=$movimentos['valor'][$i];
//在这里使用这些值可以做任何您喜欢的事情
//例如。
如果(!$percentagem&&!$valor){
// ...
}
}

创建一个计数器变量并在每次迭代中递增它,使用
数组搜索
(返回第一个匹配结果的索引)我的问题是访问foreach中的
$movimentos['Valor']
索引,而不是
'CodProduto'
索引。你能进一步解释一下吗?哪些部分应该尝试,为什么?美元指数帮我做到了。我知道这不是传递对象的最佳方式,但这不是我的代码,我选择了一些1的工作:<这个对象来自ajax的JS。谢谢,老兄,真的很平静!