Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 按键拆分数组_Php - Fatal编程技术网

Php 按键拆分数组

Php 按键拆分数组,php,Php,我有一个具有以下键的数组: Array { [vegetable_image] => [vegetable_name] => [vegetable_description] => [fruit_image] => [fruit_name] => [fruit_description] => } 我想根据前缀(蔬菜和水果)来分割它们,这可能吗 目前,我正在尝试array\u chunk(),但如何将它们存储到两个

我有一个具有以下键的数组:

Array
{
    [vegetable_image] =>
    [vegetable_name] =>
    [vegetable_description] =>
    [fruit_image] =>
    [fruit_name] =>
    [fruit_description] =>
}
我想根据前缀(蔬菜和水果)来分割它们,这可能吗

目前,我正在尝试
array\u chunk()
,但如何将它们存储到两个单独的数组中

[vegetables] => Array { [vegetable_image] ... }
[fruits] => Array { [fruit_image] ... }

这应该适合您:

$fruits = array();
$vegetables = array();

foreach($array as $k => $v) {
    if(strpos($k,'fruit_') !== false)
        $fruits[$k] = $v;
    elseif(strpos($k,'vegetable_') !== false)
        $vegetables[$k] = $v;
}
例如,请参见:

使用
explode()

开箱即用

function splittArray($base_array, $to_split, $delimiter='_') {
   $out = array();
   foreach($to_split as $key) {
      $search = $key.delimiter;
      foreach($base_array as $ok=>$val) {
        if(strpos($ok,$search)!==false) {
           $out[$key][$ok] = $val;
        }
   }
   return $out;
 }

 $new_array = splittArray($array,array('fruit','vegetable'));

使用简单的PHP数组遍历和函数

<?php
$arr = array();
$arr['vegetable_image'] = 'vegetable_image';
$arr['vegetable_name'] = 'vegetable_name';
$arr['vegetable_description'] = 'vegetable_description';
$arr['fruit_image'] = 'fruit_image';
$arr['fruit_name'] = 'fruit_name';
$arr['fruit_description'] = 'fruit_description';

$fruits = array();
$vegetables = array();
foreach ($arr as $k => $v) {
    if (substr($k, 0, 10) == 'vegetable_') {
        $vagetables[$k] = $v;
    }
    else if (substr($k, 0, 6) == 'fruit_') {
        $fruits[$k] = $v;
    }
}
print_r($fruits);
print_r($vagetables);
使用

检查

剩下的只有一件事:你在使用不同的形式(比如
“蔬菜”
->
“蔬菜”
)。PHP不够聪明,无法替代语言(在本例中为英语)这样的转换。但如果您愿意,您可以为此创建有效表单数组

<?php
$arr = array();
$arr['vegetable_image'] = 'vegetable_image';
$arr['vegetable_name'] = 'vegetable_name';
$arr['vegetable_description'] = 'vegetable_description';
$arr['fruit_image'] = 'fruit_image';
$arr['fruit_name'] = 'fruit_name';
$arr['fruit_description'] = 'fruit_description';

$fruits = array();
$vegetables = array();
foreach ($arr as $k => $v) {
    if (substr($k, 0, 10) == 'vegetable_') {
        $vagetables[$k] = $v;
    }
    else if (substr($k, 0, 6) == 'fruit_') {
        $fruits[$k] = $v;
    }
}
print_r($fruits);
print_r($vagetables);
$array     = ['foo_bar' => 1, 'foo_baz' => 2, 'bar_fee' => 6, 'bar_feo' => 9, 'baz_bee' => 7];
$delimiter = '_';

$result = array_reduce(array_keys($array), function ($current, $key) use ($delimiter) {
        $splitKey                = explode($delimiter, $key);
        $current[$splitKey[0]][] = $key;
        return $current;
}, []);