我得到了如下数组 规范:
阵列 ( [0] => 8 [1] => 红色 (
数组 ( [0] => 9 [1] =>黄色
(阵列 ( [0] => 9 [1] => 红色 (
我希望所有 [0] 索引值都在一行中,所有 [1] 索引都在下一行中
选择: 阵列 ( [0] => 大小 [1] => 颜色 (
在大小中,所有 [0] 索引都想要存储,在颜色中所有 [1] 想要存储
输出希望如下所示:
尺寸 [8, 9, 8]
彩色[红,黄色,红]
Source code
<?php
$where = array(
'ProductBrand'=>$value->ProductBrand,
'ProductIsActive'=>1,
'ProductStatus'=>'Approved'
);
$data['id'] = $this->Custom_model->getwhereid('products',$where,array());
在此ID中将根据所选品牌获取所有产品ID
foreach($data['id'] as $key => $row) {
$where = array(
'ProductID'=>$row->ProductID,
'ProductIsActive'=>1,
'ProductStatus'=>'Approved'
);
$jointables = array(
'categories'=>'CategorySlug=ProductCategory',
'subcategories'=>'SubCategorySlug=ProductSubCategory',
'brands'=>'BrandSlug=ProductBrand',
'producttypes'=>'ProductTypeID=ProductType',
'optionvalues'=>'OptionValueProductID=ProductID'
);
$data['spec'] = $this->Custom_model->getwherejoin('products',$jointables,$where,array());
foreach ($data['spec'] as $key => $spec) {
$ptoptionname = $spec->ProductTypeOptionName;
$ptoptionname = explode (",", $ptoptionname);
$count=count($ptoptionname);
$specname = $spec->OptionValueSpecification;
$specname = explode (",", $specname);
for ($i=0; $i<$count; $i++) {
?>
<div class="stock-container info-container m-t-20 sizeborder">
<div class="row">
<div class="col-sm-2">
<div class="stock-box">
<span class="label"><?php echo $ptoptionname[$i]; ?> </span>
</div>
</div>
<div class="col-sm-9">
<div class="stock-box">
<a href=""><span class="productcolor productsizeonclick"> <?php echo $specname[$i]; ?> </span></a>
</div>
</div>
</div><!-- /.row -->
</div><!-- /.stock-container -->
<?php } } }?>
但我的输出是跟随的
尺寸 8
颜色 红色
尺寸 9
颜色 黄色
尺寸 9
颜色 红色
您可以通过使用null
回调和解压缩的$data
数组调用array_map()
来转置$data
数组。
然后,您只需使用array_combine()
来应用所需的第一级键。
代码:(演示(
$data = [
["8","red"],
["9", "yellow"],
["8","red"]
];
var_export(array_combine(['size', 'color'], array_map(null, ...$data)));
输出:
array (
'size' =>
array (
0 => '8',
1 => '9',
2 => '8',
),
'color' =>
array (
0 => 'red',
1 => 'yellow',
2 => 'red',
),
)
我的技术的好处是,当您添加更多列时,您永远不需要添加更多函数调用(如果在每列上调用array_column()
则不正确(。 我的解决方案从不需要超过两个函数调用即可完成工作。
<?php
$data=array(
array("8","red"),
array("9", "Yellow"),
array("8","red")
);
$size=[];
$colors=[];
foreach($data as $key=>$value){
echo "<pre>";
print_r($value);
$size[$key]=$value[0];
$colors[$key]=$value[1];
}
print_r($size);
print_r($colors);
# comma seprated
echo "Size List:";
print_r(implode($size, ','));
echo "<br>";
echo "Color List:";
print_r(implode($colors, ','));
?>
您可以使用array_column()
函数返回输入数组中单个列的值。之后,您可以使用implode()
将数组转换为字符串。
$data = [
[0 => 8, 1 => 'red'],
[0 => 9, 1 => 'yellow'],
[0 => 9, 1 => 'red']
];
$newArray['size'] = array_column($data, 0);
$newArray['color'] = array_column($data, 1);
echo "<pre>";
print_r($newArray);
echo "</pre>";
echo "<p>Size: " . implode($newArray['size'], ',') . "</p>";
echo "<p>Color: " . implode($newArray['color'], ',') . "</p>";