Php 从多维数组返回特定值

Php 从多维数组返回特定值,php,arrays,Php,Arrays,我有这个数组($myArray): 然后我将其分为几块: $chunks = array_chunk($myArray, 3); 这就给我留下了多维数组输出($chunks): 然后我需要填充另一个数组($myInsert),如下所示: 总而言之,我想循环遍历数组的每个块,并将该块中的每个值写入另一个数组 我的问题:如何从多维数组中提取特定值? 解决方案: <?php $myArray = array("a", "b", "c", "d", "e", "f", "g", "h", "i

我有这个数组($myArray):

然后我将其分为几块:

$chunks = array_chunk($myArray, 3);
这就给我留下了多维数组输出($chunks):

然后我需要填充另一个数组($myInsert),如下所示:

总而言之,我想循环遍历数组的每个块,并将该块中的每个值写入另一个数组

我的问题:如何从多维数组中提取特定值?

解决方案:

<?php

$myArray = array("a", "b", "c", "d", "e", "f", "g", "h", "i");

$myInsert = array(
    'something1' => "CAT",
    'something2' => "HAT",
    'something3' => "BAT"
    );

$chunks = array_chunk($myArray, 3);

foreach ($chunks as $i => $chunk)
{

    list($sku, $name, $img) = $chunk;
    $x = $i + 1;
    $myInsert["sku{$x}_sku"] = $sku;
    $myInsert["sku{$x}_name"] = $name;
    $myInsert["sku{$x}_img"] = $img;

}

print_r($myInsert);

?>
array (
    'something1' => 'CAT',
    'something2' => 'HAT',
    'something3' => 'BAT',
    'sku1_sku'   => 'a',
    'sku1_name'  => 'b',
    'sku1_img'   => 'c',
    'sku2_sku'   => 'd',
    'sku2_name'  => 'e',
    'sku2_img'   => 'f',
    'sku3_sku'   => 'g',
    'sku3_name'  => 'h',
    'sku3_img'   => 'i',
)

您只需一次访问所有元素:

$myInsert = array();
foreach ($chunks as $i => $chunk)
{
    list($chunk_sku, $chunk_name, $chunk_img) = $chunk;
    $myInsert["sku{$i}_sku"] = $chunk_sku;
    $myInsert["sku{$i}_name"] = $chunk_name;
    $myInsert["sku{$i}_img"] = $chunk_img;
}

通过list()学到了一些新的东西,但遗憾的是,这不是我想要的。我希望$varCAT、$varBAT和$varHAT从数组返回特定的值,在我的示例“d”、“e”和“f”中。这三个值是“第二”块的一部分。@Crayons你能简单地访问第二块吗?i、 e.使用
$chunk=$chunks[1]。我可以,但那不是我想要的。对不起,我想我只是在这个问题上做得不好。这个分块数组是一个产品数组。阵列中的产品(块)数量各不相同。这些产品必须插入到单个数据库行中。我将属于每一列的内容组合到一个单独的数组($myInsert)中。因此,我需要循环遍历$myArray中的每个块,然后将每个值分配给$myInsert数组中的特定值。@Crayons您能否提供一个示例,说明
$chunks
中的内容以及预期的输出是什么?您似乎引用了
$myArray
$myInsert
,但这在您的代码中并不存在。谢谢!我不知道您可以像那样直接将项插入数组($myArray[]=blah)。原始发布更新以显示解决方案。谢谢mc10!问题是您有一个数组。您的第一个循环将给您留下几次数组传递。第二个循环将留给您一个值。你似乎觉得你有多个价值观,但你没有。请参阅@mc10的答案->这里只有一个foreach,这是合乎逻辑的。如果您需要多个循环,那么您需要处理一个元素的代码,而不是多个元素的代码。第一个循环遍历数组的每个块。第二个循环,然后迭代该块中的每个key:value对,这实际上给我留下了多个值。无论如何,我看到你接受了一个不需要第二个循环的答案:这是我的观点:)你完全正确。你的建议完全出乎我的意料。谢谢你抽出时间!
<?php

$myArray = array("a", "b", "c", "d", "e", "f", "g", "h", "i");

$myInsert = array(
    'something1' => "CAT",
    'something2' => "HAT",
    'something3' => "BAT"
    );

$chunks = array_chunk($myArray, 3);

foreach ($chunks as $i => $chunk)
{

    list($sku, $name, $img) = $chunk;
    $x = $i + 1;
    $myInsert["sku{$x}_sku"] = $sku;
    $myInsert["sku{$x}_name"] = $name;
    $myInsert["sku{$x}_img"] = $img;

}

print_r($myInsert);

?>
array (
    'something1' => 'CAT',
    'something2' => 'HAT',
    'something3' => 'BAT',
    'sku1_sku'   => 'a',
    'sku1_name'  => 'b',
    'sku1_img'   => 'c',
    'sku2_sku'   => 'd',
    'sku2_name'  => 'e',
    'sku2_img'   => 'f',
    'sku3_sku'   => 'g',
    'sku3_name'  => 'h',
    'sku3_img'   => 'i',
)
$myInsert = array();
foreach ($chunks as $i => $chunk)
{
    list($chunk_sku, $chunk_name, $chunk_img) = $chunk;
    $myInsert["sku{$i}_sku"] = $chunk_sku;
    $myInsert["sku{$i}_name"] = $chunk_name;
    $myInsert["sku{$i}_img"] = $chunk_img;
}