如何在单个数组中使多个数组值

  • 本文关键字:数组 单个 php codeigniter
  • 更新时间 :
  • 英文 :


我得到了如下数组 规范:

阵列 ( [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>";

相关内容

  • 没有找到相关文章

最新更新