当您在循环中迭代数组时,如何知道数组中是否不存在更多值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当您在循环中迭代数组时,如何知道数组中是否不存在更多值相关的知识,希望对你有一定的参考价值。
所以,我在数据库中有一个locations
表,其中包含seller_id
。许多地点可以拥有相同的seller_id,而地点是唯一的。
在函数中,我得到一个输入数组,它是位置列表,每个位置都有另一个数组,它是变体列表。例
$data = [
23 => [40 => 1, 25 => 2],
6 => [22 => 3, 24 => 4],
28 => [22 => 3, 24 => 4],
18 => [22 => 3, 24 => 4],
]
所以在这里,23,6,28 and 18
是位置,40,25,22,24
是变种。
这里的问题是,我需要一个seller_id
数组,每个seller_id
将拥有各自变体的数组。我需要以优化的方式做到这一点。
我觉得它是这种东西,
$locationIDs = collect($inventoryData)->keys();
$locationBySellers = Location::whereIn('id', $locationIDs)->pluck('seller_id','id');
foreach ($locationBySellers as $location => $seller) {
$variants = array_keys($data[$location]);
echo "Seller: ".$seller.", Variants: ".$variants."\n";
//How to know if no more sellers are present with value $seller
}
你能帮帮我吗?任何意见,将不胜感激
答案
假设你可以从数据库中提取$data
。以下代码将获取seller_id及其各自的变体。
$data = [
23 => [40 => 1, 25 => 2],
6 => [22 => 3, 24 => 4],
28 => [22 => 3, 24 => 4],
18 => [22 => 3, 24 => 4],
];
foreach ($data as $location => $seller) {
$variants = array_keys($data[$location]);
foreach($seller as $variant=>$id) {
if(!isset($sellers[$id])) $sellers[$id]=[];
if(!in_array($variant,$sellers[$id])) array_push($sellers[$id],$variant);
}
// echo "Seller: ".$seller.", Variants: ".$variants."\n";
//How to know if no more sellers are present with value $seller
}
var_dump($sellers);
它将输出array(4) { [1]=> array(1) { [0]=> int(40) } [2]=> array(1) { [0]=> int(25) } [3]=> array(1) { [0]=> int(22) } [4]=> array(1) { [0]=> int(24) } }
。
以上是关于当您在循环中迭代数组时,如何知道数组中是否不存在更多值的主要内容,如果未能解决你的问题,请参考以下文章