<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## **將某個字段相同的值最為新鍵名重組數組(*)** ``` $arr=array( 0=>array( 'tid'=>26, 'tname'=>'內衣', 'cmid'=>1 ), 1=>array( 'tid'=>25, 'tname'=>'女裝', 'cmid'=>1 ), 2=>array( 'tid'=>27, 'tname'=>'男裝', 'cmid'=>2 ), 3=>array( 'tid'=>28, 'tname'=>'運動', 'cmid'=>2 ), 4=>array( 'tid'=>29, 'tname'=>'戶外', 'cmid'=>2 ), 5=>array( 'tid'=>30, 'tname'=>'男鞋', 'cmid'=>3 ), 6=>array( 'tid'=>31, 'tname'=>'女鞋', 'cmid'=>3 ), 7=>array( 'tid'=>32, 'tname'=>'化妝', 'cmid'=>4 ), ); $item=array(); foreach($arr as $k=>$v){ $item[$v['id']][]=$v; } print_r($item); ``` ``` Array ( [1] => Array ( [0] => Array ( [tid] => 26 [tname] => 內衣 [id] => 1 ) [1] => Array ( [tid] => 25 [tname] => 女裝 [id] => 1 ) ) [2] => Array ( [0] => Array ( [tid] => 27 [tname] => 男裝 [id] => 2 ) [1] => Array ( [tid] => 28 [tname] => 運動 [id] => 2 ) [2] => Array ( [tid] => 29 [tname] => 戶外 [id] => 2 ) ) [3] => Array ( [0] => Array ( [tid] => 30 [tname] => 男鞋 [id] => 3 ) [1] => Array ( [tid] => 31 [tname] => 女鞋 [id] => 3 ) ) [4] => Array ( [0] => Array ( [tid] => 32 [tname] => 個人化妝 [id] => 4 ) ) ) ``` ## **將查出的數據按照ABC進行重組** ``` function get_antibody_pairs(){ $data=\app\common\model\AntibodyPairs::where([ ['status','=',1], ])->order('antibody_pairs_name asc, sort desc, id asc')->select()->toArray(); foreach ($data as $key => $value) { $first_str=mb_substr(trim($value['antibody_pairs_name']),0,1); $data[$key]['first_str']=$first_str; } $item=array(); foreach($data as $k=>$v){ $item[$v['first_str']][]=$v; } return $item; } ``` 結果 ~~~ ^ array:3 [▼ "A" => array:3 [▼ 0 => array:10 [▼ "id" => 1 "create_time" => "2023-08-01 08:15:51" "update_time" => "2023-08-01 08:15:51" "sort" => 50 "status" => 1 "cate_id" => 898 "detection_antibody" => "OAMA00364" "capture_antibody" => "OAMA00515" "antibody_pairs_name" => " Adenovirus hexon pair" "first_str" => "A" ] 1 => array:10 [?] 2 => array:10 [?] ] "B" => array:1 [▼ 0 => array:10 [?] ] "C" => array:1 [▼ 0 => array:10 [?] ] ~~~ ## **多層次類別組合** ``` /** * 組合多維數組 * @param $cate sql類別二維數據 * @param string $name 子數組鍵名 * @param int $pid 父id * @return array */ function unlimitedForLayer($cate, $name = 'sub', $pid = 0) { $arr = array(); foreach ($cate as $v) { if ($v['parent_id'] == $pid||$v['pid']==$pid) {//如果某個數據的父id為0時 $v[$name] = unlimitedForLayer($cate, $name, $v['id']); $arr[] = $v; } } return $arr; } ``` 示例 ``` $arr=[ [ 'id'=>"1", 'name'=>"a0", 'pid'=>'0' ], [ 'id'=>"2", 'name'=>"a1", 'pid'=>'1' ], [ 'id'=>"3", 'name'=>"a3", 'pid'=>'1' ], [ 'id'=>"4", 'name'=>"a4", 'pid'=>'1' ], [ 'id'=>"5", 'name'=>"b0", 'pid'=>'0' ], [ 'id'=>"6", 'name'=>"b1", 'pid'=>'5' ], ]; $res=unlimitedForLayer($arr); var_export($res); ``` 結果: ``` array ( 0 => array ( 'id' => '1', 'name' => 'a0', 'pid' => '0', 'sub' => array ( 0 => array ( 'id' => '2', 'name' => 'a1', 'pid' => '1', 'sub' => array ( ), ), 1 => array ( 'id' => '3', 'name' => 'a3', 'pid' => '1', 'sub' => array ( ), ), 2 => array ( 'id' => '4', 'name' => 'a4', 'pid' => '1', 'sub' => array ( ), ), ), ), 1 => array ( 'id' => '2', 'name' => 'a1', 'pid' => '1', 'sub' => array ( ), ), 2 => array ( 'id' => '3', 'name' => 'a3', 'pid' => '1', 'sub' => array ( ), ), 3 => array ( 'id' => '4', 'name' => 'a4', 'pid' => '1', 'sub' => array ( ), ), 4 => array ( 'id' => '5', 'name' => 'b0', 'pid' => '0', 'sub' => array ( 0 => array ( 'id' => '6', 'name' => 'b1', 'pid' => '5', 'sub' => array ( ), ), ), ), 5 => array ( 'id' => '6', 'name' => 'b1', 'pid' => '5', 'sub' => array ( ), ), ) ``` ## **多個數據組合,如商品規格屬性** ``` function getArrSet($arrs,$_current_index=-1) { //總數組 static $_total_arr; //總數組下標計數 static $_total_arr_index; //輸入的數組長度 static $_total_count; //臨時拼湊數組 static $_temp_arr; //進入輸入數組的第一層,清空靜態數組,并初始化輸入數組長度 if($_current_index<0) { $_total_arr=array(); $_total_arr_index=0; $_temp_arr=array(); $_total_count=count($arrs)-1; getArrSet($arrs,0); } else { //循環第$_current_index層數組 foreach($arrs[$_current_index] as $v) { //如果當前的循環的數組少于輸入數組長度 if($_current_index<$_total_count) { //將當前數組循環出的值放入臨時數組 $_temp_arr[$_current_index]=$v; //繼續循環下一個數組 getArrSet($arrs,$_current_index+1); } //如果當前的循環的數組等于輸入數組長度(這個數組就是最后的數組) else if($_current_index==$_total_count) { //將當前數組循環出的值放入臨時數組 $_temp_arr[$_current_index]=$v; //將臨時數組加入總數組 $_total_arr[$_total_arr_index]=$_temp_arr; //總數組下標計數+1 $_total_arr_index++; } } } return $_total_arr; } ``` 測試 ``` $arr=array( array('a','b','c'), array('A','B','C'), array('1','2','3'), array('I','II','III') ); var_export(getArrSet($arr)); /* array ( 0 =>array ( 0 => 'a', 1 => 'A', 2 => '1', 3 => 'I', ), //... 80 =>array ( 0 => 'c', 1 => 'C', 2 => '3', 3 => 'III', ), ) */ ``` 方法2: ``` /** * 返回給的數組的所有組合 * @email kavtong@163.com * @param array $orignal 多維數組 * $orignal = array( * array(1,2,3), * array(4,5,6), * array(7,8,9), * ); * @return array( * array(1,4,7), * array(1,4,8), * array(1,4,9), * ... * array(3,6,7), * array(3,6,8), * array(3,6,9), * ); * 數組元素共: 3*3*3 = 27個 */ function getPermutation(array $orignal = array()){ // 排除非數組的參數 if(!is_array($orignal)){ return []; } // 排除空數組 if(empty($orignal)){ return []; } // 排除只有一個元素的數組 if(count($orignal) < 2){ // 返回的目標數組 $targetTmp = array_shift($orignal); // 返回結果集 return is_array($targetTmp)?$targetTmp:[]; } // 構建目標數組 $target = array_shift($orignal); // 目標數組第一個元素格式化為數組 $target = is_array($target)?$target:[]; // 下一個需要處理的數組 $tmp = array_shift($orignal); // 非正常數據標識 $invalideParam = false; // 數組且不為空 while(is_array($tmp) && !empty($tmp)){ // 驗證參數是否是一維數組 if(count($tmp) <> count($tmp,COUNT_RECURSIVE)){ $invalideParam = true; break; } /** * 原始數組的循環 * array( * 0 =>1, * 1 =>2, * 2 =>3, * ); */ // 目標數組的臨時變量 $targetTmp = array(); foreach($target as $value){ foreach($tmp as $v){ // 臨時數組變量 $targetTmp[] = array_merge((array)$value,[$v]); } } // 原始數組的替換 $target = $targetTmp; // 移動數組的下一個元素 $tmp = array_shift($orignal); } // 存在非一維數組項 if($invalideParam){ return []; } // 返回結果集 return is_array($target)?$target:[]; } $orignal = array( array(1,2,3), array(4,5,6), array(7,8,9), ); $a=getPermutation($orignal); var_export($a); ``` 方法3: ``` class Test{ private $models=[['RED','BLUE','GREEN'],['低配','中配','高配'],['進口','國產']]; private $index=0; /** * 組合 */ public function combineAttributes(){ $m_len=count($this->models); if($m_len>=2){ $result=$this->recurse($this->models[$this->index],$this->models[++$this->index],$m_len); }else{ $result=$this->models[0]; } print_r($result); } /** * 遞歸拼接屬性 * @param $array1 * @param $array2 * @param $m_len * @return array */ public function recurse($array1,$array2,$m_len){ $res=[]; foreach ($array1 as $a1){ foreach ($array2 as $a2){ array_push($res,$a1.'-'.$a2); } } $this->index++; if($this->index<=$m_len-1){ return $this->recurse($res,$this->models[$this->index],$m_len); }else{ return $res; } } } $a=(new Test())->combineAttributes(); /* Array ( [0] => RED-低配-進口 [1] => RED-低配-國產 [2] => RED-中配-進口 [3] => RED-中配-國產 [4] => RED-高配-進口 [5] => RED-高配-國產 [6] => BLUE-低配-進口 [7] => BLUE-低配-國產 [8] => BLUE-中配-進口 [9] => BLUE-中配-國產 [10] => BLUE-高配-進口 [11] => BLUE-高配-國產 [12] => GREEN-低配-進口 [13] => GREEN-低配-國產 [14] => GREEN-中配-進口 [15] => GREEN-中配-國產 [16] => GREEN-高配-進口 [17] => GREEN-高配-國產 ) */ ``` ## **重置數組的鍵為連續的索引** **1、array_values 函數并不止重置數字索引還會將字符串鍵名也同樣刪除并重置。** ~~~ <?php $input?=?[0?=>?233,?99?=>?666]; var_dump(array_values($input)); //?結果?[0?=>?233,?1?=>?66] ~~~ **2、array_slice函數的功能是取出數組的中的一段,但它默認會重新排序并重置數組的數字索引,所以可以利用它重置數組中的數字索引。** ~~~ <?php $input?=?['hello'?=>?'world',?0?=>?233,?99?=>?666]; var_dump(array_slice($input,?0)); //?結果?['hello'?=>?'world',?0?=>?233,?1?=>?66] ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看