Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 字符串分解两次数组foreach循环_Php_Arrays_Loops_Explode - Fatal编程技术网

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];