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

我得到了如下规格的数组:


数组( [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>


暮色呼如
浏览 136回答 3
3回答

慕桂英3389331

您可以通过$data调用回调和解包数组来转置数组。array_map()null$data然后,您只需使用array_combine()您想要的第一级密钥。代码:(演示)$data = [&nbsp; &nbsp; ["8","red"],&nbsp; &nbsp; ["9", "yellow"],&nbsp; &nbsp; ["8","red"]];var_export(array_combine(['size', 'color'], array_map(null, ...$data)));输出:array (&nbsp; 'size' =>&nbsp;&nbsp; array (&nbsp; &nbsp; 0 => '8',&nbsp; &nbsp; 1 => '9',&nbsp; &nbsp; 2 => '8',&nbsp; ),&nbsp; 'color' =>&nbsp;&nbsp; array (&nbsp; &nbsp; 0 => 'red',&nbsp; &nbsp; 1 => 'yellow',&nbsp; &nbsp; 2 => 'red',&nbsp; ),)我的技术的好处是,当您添加更多列时,您永远不需要添加更多函数调用(如果array_column()在每一列上调用,这将不是真的)。我的解决方案永远不需要两个以上的函数调用来完成工作。

呼唤远方

您可以使用array_column()函数从输入数组中的单个列返回值。之后,您可以使用implode()将数组转换为字符串。$data = [&nbsp;&nbsp; [0 => 8, 1 => 'red'],&nbsp; [0 => 9, 1 => 'yellow'],&nbsp; [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>";

慕勒3428872

<?php$data=array(&nbsp; &nbsp; array("8","red"),&nbsp; &nbsp; array("9", "Yellow"),&nbsp; &nbsp; 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 sepratedecho "Size List:";print_r(implode($size, ','));echo "<br>";echo "Color List:";print_r(implode($colors, ','));?>
打开App,查看更多内容
随时随地看视频慕课网APP