Php 字符串分解两次数组foreach循环
我有以下代码:Php 字符串分解两次数组foreach循环,php,arrays,loops,explode,Php,Arrays,Loops,Explode,我有以下代码: $sample = '5ml milk, 5ml water, 3pcs carrots'; echo $sample."</br>"; $first_slice = explode(',',$sample); foreach($first_slice as $key => $value) { $second_slice[$key] = explode(' ',$value); } print_r($second_slice); 输出为: 阵列([ml]
$sample = '5ml milk, 5ml water, 3pcs carrots';
echo $sample."</br>";
$first_slice = explode(',',$sample);
foreach($first_slice as $key => $value)
{
$second_slice[$key] = explode(' ',$value);
}
print_r($second_slice);
输出为:
阵列([ml]=>5个[pcs]=>3个)
绳子上有2个5毫升。我怎样才能避免它被取出?因为它们是独立的成分。您只想输出
5ml牛奶
?因为如果是这样,只需执行以下操作:
echo$first_切片[0]代码>当前,您有一个多维数组。您可以简化此方法并将阵列展平到一维。我建议您修改foreach
循环,如下所示:
foreach($first_slice as $key => $value)
{
$arr = explode(' ', trim($value));
$second_slice[$arr[1]] = $arr[0];
}
print_r($second_slice);
生成输出:
Array
(
[milk] => 5ml
[water] => 5ml
[carrots] => 3pcs
)
现在,要获取任何项目的数量,您可以直接执行echo$second\u slice['item\u name']
如果您想从金额中找到数量的名称,可以使用:
产出:
carrots
如果有多个数量具有相同的数量,则上述方法仅返回第一个数量。如果您想获得所有这些,可以使用:
输出:
Array
(
[milk] => 5ml
[water] => 5ml
)
有一个隐藏的空白问题,但是您可以使用以下代码轻松地解决它:
有几种方法可以实现这一点。这里有一个方法:
$sample = '5ml milk, 5ml water, 3pcs carrots';
$items = explode(",", $sample);
$final = array();
foreach($items as $i){
$value = explode(" ", trim($i));
$final[$value[1]] = $value[0];
}
echo "<pre>";
print_r($final);
echo "</pre>";
$sample='5ml牛奶,5ml水,3个胡萝卜';
$items=分解(“,”,$sample);
$final=array();
foreach(项目为$i){
$value=explode(“,trim($i));
$final[$value[1]]=$value[0];
}
回声“;
打印(最终版);
回声“;
如果您想回显“5ml牛奶”:
回声“5ml水”
回应“三份胡萝卜”
我已经看完了所有的答案。TBH我对处理多维数组不太自信,因为我有一个带有多个表的DB(ERD),所以我真的需要特定的值才能进入特定的表中。我相信你的方法是最好的,把它展平成一个数组,这样就更容易解析了。用这行代码$第二个_片[$arr[1]]=$arr[0];您是否分配给arr[key]=arr[value]@user3205047:当然。请走开@user3205047:没错。您可以执行print\r($arr)
在$arr=…
语句之后查看分解数组的内容。在本例中,字符串的第一部分是金额,第二部分是项目名称,因此需要将数组构建为$second_slice[$arr[1]]=$arr[0]代码>。希望这能回答你的问题!谢谢你的澄清。现在我可以放心了:)
$result = array_filter($second_slice, function($elem) use ($searchFor){
return ($elem == $searchFor);
});
print_r($result);
Array
(
[milk] => 5ml
[water] => 5ml
)
$sample = '5ml milk, 5ml water, 3pcs carrots';
echo $sample."</br>";
$first_slice = explode(',',$sample);
foreach($first_slice as $key => $value)
{
$second_slice[$key] = explode(' ',trim($value));
}
print_r($second_slice);
Array
(
[0] => Array
(
[0] => 5ml
[1] => milk
)
[1] => Array
(
[0] => 5ml
[1] => water
)
[2] => Array
(
[0] => 3pcs
[1] => carrots
)
)
$sample = '5ml milk, 5ml water, 3pcs carrots';
$items = explode(",", $sample);
$final = array();
foreach($items as $i){
$value = explode(" ", trim($i));
$final[$value[1]] = $value[0];
}
echo "<pre>";
print_r($final);
echo "</pre>";
echo $second_slice[0][0] . " " . $second_slice[0][1];
echo $second_slice[1][0] . " " . $second_slice[1][1];
echo $second_slice[2][0] . " " . $second_slice[2][1];