Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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_Arrays_Multidimensional Array - Fatal编程技术网

Php 使用键值对添加到多维数组

Php 使用键值对添加到多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我返回一个类似于这个想法的数组 Array ( [0] => Array ( [GRP] => "Group1" [ITM] => "Item1" ) [1] => Array ( [GRP] => "Group1" [ITM] => "Item2" ) [2] => Ar

我返回一个类似于这个想法的数组

Array
(
    [0] => Array
        (
            [GRP] => "Group1"
            [ITM] => "Item1"
        )
    [1] => Array
        (
            [GRP] => "Group1"
            [ITM] => "Item2"
        )
    [2] => Array
        (
            [GRP] => "Group1"
            [ITM] => "Item1"
        )
    [3] => Array
        (
            [GRP] => "Group2"
            [ITM] => "Item1"
        )
    [4] => Array
        (
            [GRP] => "Group2"
            [ITM] => "Item2"
        )
)
我希望能够搜索整个数组,并计算
项的总数
对于上面的示例,结果应该是

Array
(
    ["Group1"] => Array
        (
            ["Item1"] => 2
            ["Item2"] => 1
        )
    ["Group2"] => Array
        (
            ["Item1"] => 1
            ["Item2"] => 1
        )
)
但我不知道该怎么做

我想搜索对我来说很棘手。 我想用这样的东西

foreach($array as $row){
    $grp = $row["GRP"];
    $itm = $row["ITM"];

    $grpFound = array_search($grp, $newArray);
    if($grpFound){
        //GRP found, now search for ITM
        $itmFound = array_search($grp, $newArray[$grp]);
        if($itmFound){
            // increase the key value of the item
            $newArray[$grp][$itm] += 1
        }else{
            //Add new item to array group with a item value of 1
            $newArray[$grp] = [$itm => 1]
        }
    }else{
        // ADD new group to array
        $newArray[] = $grp;
    }
}

这就是我脑海中的想法,我知道它是一种伪代码,但请告诉我我是否在正确的轨道上。

你非常接近-只需要在循环中使用一些条件

工作原型:

$aEntry = array();
$aEntry[ 'GRP' ] = 'Group1';
$aEntry[ 'ITM' ] = 'Item1';

$aEntry2 = array();
$aEntry2[ 'GRP' ] = 'Group1';
$aEntry2[ 'ITM' ] = 'Item2';

$aEntry3 = array();
$aEntry3[ 'GRP' ] = 'Group1';
$aEntry3[ 'ITM' ] = 'Item1';

$aEntry4 = array();
$aEntry4[ 'GRP' ] = 'Group2';
$aEntry4[ 'ITM' ] = 'Item1';

$aEntry5 = array();
$aEntry5[ 'GRP' ] = 'Group2';
$aEntry5[ 'ITM' ] = 'Item2';

$aEntry6 = array();
$aEntry6[ 'GRP' ] = 'Group2';
$aEntry6[ 'ITM' ] = 'Item1';

$aEntry7 = array();
$aEntry7[ 'GRP' ] = 'Group3';
$aEntry7[ 'ITM' ] = 'Item1';

$aData = array();
$aData[] = $aEntry;
$aData[] = $aEntry2;
$aData[] = $aEntry3;
$aData[] = $aEntry4;
$aData[] = $aEntry5;
$aData[] = $aEntry6;
$aData[] = $aEntry7;

$aFormatted = array();
$iCountData = count( $aData );
for( $i = 0; $i < $iCountData; ++$i )
{
    $vKeyToAppendTo = '';
    foreach( $aFormatted as $sKey => $aValues )
    {
        if( ( $aValues[ 0 ][ 'GRP' ] == $aData[ $i ][ 'GRP' ] ) )
        {
            // Set the array key to append to.
            $vKeyToAppendTo = $sKey;
            break;
        }
    }
    // If we have a key match append.
    if( !empty( $vKeyToAppendTo ) )
    {
        $aFormatted[ $vKeyToAppendTo ][] = $aData[ $i ];
    }
    // Otherwise create the new lat/lng entry group.
    else
    {
        $aFormatted[ $aData[ $i ][ 'GRP' ] ][] = $aData[ $i ];
    }
}
var_dump( $aFormatted );
$aEntry=array();
$aEntry['GRP']='Group1';
$aEntry['ITM']='Item1';
$aEntry2=数组();
$aEntry2['GRP']='Group1';
$aEntry2['ITM']='Item2';
$aEntry3=数组();
$aEntry3['GRP']='Group1';
$aEntry3['ITM']='Item1';
$aEntry4=数组();
$aEntry4['GRP']='Group2';
$aEntry4['ITM']='Item1';
$aEntry5=数组();
$aEntry5['GRP']='Group2';
$aEntry5['ITM']='Item2';
$aEntry6=数组();
$aEntry6['GRP']='Group2';
$aEntry6['ITM']='Item1';
$aEntry7=数组();
$aEntry7['GRP']='Group3';
$aEntry7['ITM']='Item1';
$aData=array();
$aData[]=$aEntry;
$aData[]=$aEntry2;
$aData[]=$aEntry3;
$aData[]=$aEntry4;
$aData[]=$aEntry5;
$aData[]=$aEntry6;
$aData[]=$aEntry7;
$aFormatted=array();
$iCountData=计数($aData);
对于($i=0;$i<$iCountData;++$i)
{
$vKeyToAppendTo='';
foreach($sKey=>$aValues)
{
如果($aValues[0]['GRP']==$aData[$i]['GRP']))
{
//设置要附加到的数组键。
$vKeyToAppendTo=$sKey;
打破
}
}
//如果我们有一个键匹配。
如果(!空($vKeyToAppendTo))
{
$afformated[$vKeyToAppendTo][]=$aData[$i];
}
//否则,创建新的lat/lng入口组。
其他的
{
$a格式[$aData[$i]['GRP']][]=$aData[$i];
}
}
var_dump(预先确定);