我有以下问题,首先我想举例说明我希望将数组作为最终结果:
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']++;