php数组通过具有不同索引的两个数组循环
我有两个数组,一个包含名称列表(数组名称=php数组通过具有不同索引的两个数组循环,php,arrays,loops,Php,Arrays,Loops,我有两个数组,一个包含名称列表(数组名称=canNAMES) 第一个数组中大约有70个值,我的第二个数组中大约有600个对象(数组名=数据) 我试图使用phpin_array函数来获取第一个数组中列出的名称的对象 当我按如下方式使用它时,我能够得到所需的结果,但它最多只能读取70条记录 foreach ($canNAMES as $index => $row) { if (in_array($row, (array) $data[$index]["contractor"])) {
canNAMES
)
第一个数组中大约有70个值,我的第二个数组中大约有600个对象(数组名=数据
)
我试图使用phpin_array
函数来获取第一个数组中列出的名称的对象
当我按如下方式使用它时,我能够得到所需的结果,但它最多只能读取70条记录
foreach ($canNAMES as $index => $row) {
if (in_array($row, (array) $data[$index]["contractor"])) {
$MAIN[] = $data[$index];
}
}
上面的代码是我循环遍历第一个数组(canNAMES数组)的地方,该数组有70条记录。当我尝试循环第二个数组(数据数组)时,我得到一个未定义的偏移量错误,因为第一个数组的索引不高于69
我的问题是如何解决这个问题,是否有更好的方法来做我正在尝试的事情
谢谢如果名称不是唯一的,那么您可以轻松地循环遍历每一组数据,将一个数据与另一个数据进行匹配
$canNAMES = ["name 1","name 2","name 3"];
$data = json_decode ('[
{
"agency": "test agency",
"work_end": "21-Oct",
"contractor": "name 3",
"rate": "£30.00",
"hours": 32,
"exp": null,
"net": "£960.00",
"vat": "£192.00",
"gross": "£1,152.00"
},
{
"agency": "test agency",
"work_end": "21-Oct",
"contractor": "name 1",
"rate": "£25.00",
"hours": 30,
"exp": null,
"net": "£750.00",
"vat": "£150.00",
"gross": "£900.00"
}
]');
foreach ( $canNAMES as $name ) {
foreach ( $data as $entry ) {
if ( $name == $entry->contractor ) {
print_r($entry);
}
}
}
如果名称不是唯一的,那么您可以轻松地循环遍历每一组数据,将一个数据与另一个数据进行匹配
$canNAMES = ["name 1","name 2","name 3"];
$data = json_decode ('[
{
"agency": "test agency",
"work_end": "21-Oct",
"contractor": "name 3",
"rate": "£30.00",
"hours": 32,
"exp": null,
"net": "£960.00",
"vat": "£192.00",
"gross": "£1,152.00"
},
{
"agency": "test agency",
"work_end": "21-Oct",
"contractor": "name 1",
"rate": "£25.00",
"hours": 30,
"exp": null,
"net": "£750.00",
"vat": "£150.00",
"gross": "£900.00"
}
]');
foreach ( $canNAMES as $name ) {
foreach ( $data as $entry ) {
if ( $name == $entry->contractor ) {
print_r($entry);
}
}
}
我想您需要
数据
数组中的所有元素,这些元素的名称都存在于canNAMES
数组中
考虑以下几点:
$canNAMES = ["ccc","bbb","eee"];
$data = json_decode('[{"id":1, "contractor": "aaa"}, {"id":2, "contractor": "ddd"}, {"id":3, "contractor": "ccc"}, {"id":4, "contractor": "bbb"}]');
$res = array();
foreach($data as $elem) {
if (in_array($elem->contractor, $canNAMES))
$res[] = $elem;
}
echo print_r($res);
return;
我想您需要
数据
数组中的所有元素,这些元素的名称都存在于canNAMES
数组中
考虑以下几点:
$canNAMES = ["ccc","bbb","eee"];
$data = json_decode('[{"id":1, "contractor": "aaa"}, {"id":2, "contractor": "ddd"}, {"id":3, "contractor": "ccc"}, {"id":4, "contractor": "bbb"}]');
$res = array();
foreach($data as $elem) {
if (in_array($elem->contractor, $canNAMES))
$res[] = $elem;
}
echo print_r($res);
return;
array\u in
-你的意思是in\u array
?你是否尝试过使用$data
数组并检查$canNAMES
?@litilion-yah它不工作array\u in
-你的意思是in\u array
?你是否尝试过使用$data
数组并检查$canNAMES
?@litilion-yah它不工作我认为使用'in_array'是更好的可读性(如在我的帖子中)-但它和这个一样…我认为使用'in_array'是更好的可读性(如在我的帖子中)-但它和这个一样…这实际上是更好的方法,保存两次扫描。这实际上是更好的方法,保存两次扫描。