为了账号安全,请及时绑定邮箱和手机立即绑定

如何在单个数组中创建多个数组值

如何在单个数组中创建多个数组值

PHP
暮色呼如 2022-07-16 18:27:02
我得到了如下规格的数组:数组( [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 中将根据选择的品牌获取所有 productid        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>
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以通过$data调用回调和解包数组来转置数组。array_map()null$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()在每一列上调用,这将不是真的)。我的解决方案永远不需要两个以上的函数调用来完成工作。


查看完整回答
反对 回复 2022-07-16
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您可以使用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>";


查看完整回答
反对 回复 2022-07-16
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

<?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, ','));

?>


查看完整回答
反对 回复 2022-07-16
  • 3 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信