如何在PHP中将数组附加到另​​一个数组索引?

时间:2016-10-26 21:25:11

标签: php arrays

我有以下问题,首先我想举例说明我希望将数组作为最终结果:

Array1Key1 = Array1Value1 
    => Array2Key1 = Array2Value1 
        => Array3Key1 = Array3Value1
    => Array2Key2 = Array2Value2 
        => Array3Key1 = Array3Value1
Array1Key2 = Array1Value2 
    => Array2Key1 = Array2Value1 
        => Array3Key1 = Array3Value1

所以,我想构建一个包含一个包含另一个数组的数组的数组,正如我在我的例子中所示。

我将给出我创建数组的代码:

if(!is_array($this->ArrayExtentions))
{
    $arrayExtentions = array($fileInfo['type'] => $fileInfo['type'], array('Count' => 0));
    $this->ArrayExtentions[$fileInfo['extension']] = $arrayExtentions;
}
elseif(!isset($this->ArrayExtentions[$fileInfo['extension']]))
{
    $arrayExtentions = array($fileInfo['type'] => $fileInfo['type'], array('Count' => 0));
    $this->ArrayExtentions[$fileInfo['extension']] = $arrayExtentions;
}
elseif(!array_key_exists($fileInfo['type'], $this->ArrayExtentions[$fileInfo['extension']]))
{
    $arrayExtentions = array($fileInfo['type'] => $fileInfo['type'], array('Count' => 0));
    $this->ArrayExtentions[$fileInfo['type']] = $arrayExtentions;
}

在最后一个elseif中,是因为我有第一个键,但需要在其中附加一个新数组。

来自:

Array1Key1 = Array1Value1 
    => Array2Key1 = Array2Value1 
        => Array3Key1 = Array3Value1

Array1Key1 = Array1Value1 
    => Array2Key1 = Array2Value1 
        => Array3Key1 = Array3Value1
    => Array2Key2 = Array2Value2 
        => Array3Key1 = Array3Value1

如您所见,我想使用自定义索引访问Array。问题是,当我尝试在最后一个例子中显示的情况时,它只是不起作用。所以,最后一个是在我指定的位置覆盖数组,而不是在那里放一个新的。

有人可以帮助解决我的解决方案吗?或者来一个新解决方案?

修改

我找到了另一种解决方案,这很简单,实际上也有效。 首先,我构建一个函数,可以搜索到多维数组,并返回其内部数组,并在需要时通过引用返回索引(键)。

public function ArrayExtensionSearch($MultidimensionalArray, $Extension, $Type, &$Key=0)
{
    if(is_array($MultidimensionalArray))
    {
        foreach($MultidimensionalArray as $Key=>$array)
        {
            if($array['Extension'] == $Extension && $array['Type'] == $Type)
                    return $array;
        }
    }
    return NULL;
}

以上就是我如何使用它,不仅在需要时添加新元素,而且还增加了内部数组属性的值。另一个解决方案将有3个Arrays(数组数组),带有唯一键,但这并不是真的需要,我只需要一个数组数组,而内部数组就是拥有唯一键的那个,与我建立的逻辑只会在数组中生成一个新条目。这是代码:

$array = $this->ArrayExtensionSearch($this->ArrayExtentions, $fileInfo['extension'], $fileInfo['type'], $keyArray);
if($array == NULL)
{
    $array = array("Count" => 1, "Extension" => $fileInfo['extension'], "Type" => $fileInfo['type']);
    array_push($this->ArrayExtentions, $array);
}
else $this->ArrayExtentions[$keyArray]['Count']++;

0 个答案:

没有答案