同时从2个php多维数组中提取值
我使用了两个字符串数组,一个是全尺寸图像url,另一个是缩略图url 我正在构建一个带有同时从2个php多维数组中提取值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我使用了两个字符串数组,一个是全尺寸图像url,另一个是缩略图url 我正在构建一个带有for循环的标记,但我不知道如何从中访问第二个数组值。我试着举个例子: $array_images[70] = array("image1", "image2", "image3"); $array_thumbs[70] = array("thumb1", "thumb2", "thumb3"); print_r($array_images); print_r($array_
for循环的
标记,但我不知道如何从中访问第二个数组值。我试着举个例子:
$array_images[70] = array("image1", "image2", "image3");
$array_thumbs[70] = array("thumb1", "thumb2", "thumb3");
print_r($array_images);
print_r($array_thumbs);
foreach( $array_images as $key => $value ){
foreach( $value as $keyv => $valuev ){
echo $valuev."\n";
}
}
这将更改输出:
Array
(
[70] => Array
(
[0] => image1
[1] => image2
[2] => image3
)
)
Array
(
[70] => Array
(
[0] => thumb1
[1] => thumb2
[2] => thumb3
)
)
image1
image2
image3
Thumb: thumb1
Image: image1
Thumb: thumb2
Image: image2
Thumb: thumb3
Image: image3
我想显示image1->thumb1。但我不知道如何将两个数组合并到for循环中,确实尝试了一些循环,但我还没有解决它。有什么想法吗?由于两个数组长度相等,并且使用数字索引(其中一个数组的每个索引值与另一个数组的索引值相对应:并行数组),因此两个数组只能安全地使用一个循环。。。然后使用$键
访问另一个。下面的片段足以说明这个想法
<?php
// SIMULATING SUB-ARRAYS FOR FULL-SIZE IMAGES...
$array_images1 = array("image1", "image2", "image3");
$array_images2 = array("image4", "image5", "image6");
// SIMULATING SUB-ARRAYS FOR THUMBNAIL IMAGES...
$array_thumbs1 = array("thumb1", "thumb2", "thumb3");
$array_thumbs2 = array("thumb4", "thumb5", "thumb6");
// SIMULATING MULTIDIMENSIONAL ARRAY OF FULL/THUMB IMAGES...
$array_main_full = array($array_images1, $array_images2); //<== SAME KEY/SAME IMAGE ONLY FULL.
$array_thumbs_full = array($array_thumbs1, $array_thumbs2);; //<== SAME KEY/SAME IMAGE ONLY THUMB.
// ONE LOOP: INTENDED RESULT
foreach($array_main_full as $iKey=>$array_images){
foreach( $array_images as $key => $value ){
echo $value . "<br />";
echo $array_thumbs_full[$iKey][$key] . "<br /><br />";
}
}
// PRODUCES::
string 'image1' (length=6)
string 'thumb1' (length=6)
string 'image2' (length=6)
string 'thumb2' (length=6)
string 'image3' (length=6)
string 'thumb3' (length=6)
string 'image4' (length=6)
string 'thumb4' (length=6)
string 'image5' (length=6)
string 'thumb5' (length=6)
string 'image6' (length=6)
string 'thumb6' (length=6)
您可以使用数组
$images = array_combine($array_images,$array_thumbs);
此代码将两个阵列“连接”在一起:
$array = array();
array_walk(array_combine($images, $thumbs), function($v, $k) use(&$array){
$array[] = array(
'image' => $k,
'thumb' => $v
);
});
print\r($array)代码>将输出:
Array
(
[0] => Array
(
[image] => image1
[thumb] => thumb1
)
[1] => Array
(
[image] => image2
[thumb] => thumb2
)
[2] => Array
(
[image] => image3
[thumb] => thumb3
)
)
请注意,我使用了名为images
和thumbs
的变量。请参阅正在运行的代码
如果要循环新数组,请使用以下内容:
foreach($array as $v){
echo 'Thumb: ' . $v['thumb'] . '<br>';
echo 'Image: ' . $v['image'] . '<br><br>';
}
查看它的操作。如果两个数组都有相同的索引foreach($key=>value的数组){foreach($keyv=>value){echo$valuev.“$array\u thumbs[$key][$keyv]。“\n”;}}