我得到了这种类型的数组:
$data = array (
$imageData => array (
0 => array (
'id' => 2224689676,
'product_id' => 56286180,
'position' => 1,
'src' => '87643-674-1.jpg?v=1521829158',
'variant_ids' => array (),
),
1 => array (
'id' => 50653369,
'product_id' => 56286180,
'position' => 2,
'src' => 'https://pro.PNG?v=1537789170',
'variant_ids' => array (0 => 7137761),
),
2 => array (
'id' => 506533950,
'product_id' => 56286180,
'position' => 3,
'src' => 'product_description.PNG?v=1537789191',
'variant_ids' => array (
0 => 7137761,
),
),
3 => array (
'id' => 508279531,
'product_id' => 56286180,
'position' => 6,
'src' => 'Untitled.png?v=1537865220',
'variant_ids' => array (
0 => 7137761,
1 => 71377617
),
),
),
);
我想在显示src
索引的变体count > 0
时显示实索引的src
,否则显示[0]
的索引。注意:一张图片具有多个变体ids
。
我正在尝试以下代码:
$images=array_column($data,'imageData');
$image1=[];
foreach ($images as $image)
{
$imageData = array_column($image, 'variant_ids');
$imageSrc = array_column($image, 'src');
if (count($imageData) > 0)
{
$image1[]=$image;
}
$image1 = $imageSrc[0];
}
我想要这种类型的输出:
$image = array(0=> array(7137761 =>"Untitled.png?v=1537865220"),
1=>array(71377617 => "Untitled.png?v=1537865220"),
2=>array(7137761=>"product_description.PNG?v=1537789191"),
if array emtpty so
3=>87643-674-1.jpg?v=1521829158
);
答案 0 :(得分:0)
foreach($data['imageData'] as $image)
{
if(count($image['variant_ids'])>0)
foreach($image['variant_ids'] as $variant)
$result[] = array($variant => $image['src']);
else
$result[] = $image['src'];
}
echo '<pre>';
print_r($result);
echo '</pre>';
答案 1 :(得分:0)
如果有意外输出,请尝试对数组进行print_r。
但是:
$ imageSrc不是数组,因此它没有元素0
您需要有一个else语句,如果不是这样,则始终执行if之后的代码,而且$ image1 = $ imageSrc会覆盖$ image1的全部内容
无论如何,此代码应该有效:
Button
如果您想要$ imgSrc的默认值,则需要在循环之前获取它:
$images = $data['imageData'];
$imagesWithVariants=[];
foreach ($images as $image)
{
$imageData = $image['variant_ids'];
$imageSrc = $image['src'];
if (count($imageData) > 0)
{
$imagesWithVariants[]=array($imageData[0] => $imageSrc);
}else{
$imagesWithVariants[]=$imageSrc;
}
}
print_r($imagesWithVariants);
array_column 不适用于for循环,在这里您可以检查manual
使用array_column的示例:
$defaultImgSrc = $images[0]['src'];
foreach(....){
.
.
.
if(...){
.
.
}else{
$imagesWithVariants[]=$defaultImgSrc;
}
}
编辑:
很明显,如果您有多个变体并且都想要它们,那么您需要在变体上进行学习:
$images = $data['imageData'];
$imagesWithVariants=[];
$imageData = array_column($images,'variant_ids');
$imageSrc = array_column($images,'src');
foreach($imageData as $key=>$data){
if(count($data) > 0){
$imagesWithVariants[]= array($data[0]=>$imageSrc[$key]);
}else{
$imagesWithVariants[]=$imageSrc[0];
}
}
print_r($imagesWithVariants);