分散していますか?
データベースから読み取られたデータのほとんどは、整然とした行と列を含む 2 次元配列です。
読み取った後、PHP を使用して計算すると、多くの垂直方向の計算が必要になります。多くの人は $array[record][field] に慣れていると思います。実際、配列の 1 次元キーと 2 次元キーをどのように割り当てるかを考える必要があります
たとえば、API から取得した行列配列の形式は固定されていますが、多くの人がレコードをたどって 2 次元の値を見つけたり、再帰を使用したりするのはとても面倒そうです。行と列を交換して計算します
squareArray.php
<?phpclass squareArray{ public function swapRowCol($inArr) { $mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); foreach($inArr as $key => $value) { $temArr = new ArrayIterator($value); $mit->attachIterator($temArr, $key); } $arr = array(); foreach($mit as $item) array_push($arr,$item); if (isset($inArr[0])) $arr = array_combine(array_keys($inArr[0]),$arr); return $arr; } public function swapRowColWithKey($inArr) { foreach($inArr as $k1=>$v1) foreach($v1 as $k2=>$v2) $arr[$k2][$k1] = $v2; return $arr; } public function intersect1st($arr1, $arr2, $key) { $arr[$key] = array_intersect($arr1[$key], $arr2[$key]);//match source's $key with target foreach($arr1 as $k=>$v) { if ($k == $key) continue; $arr[$k] = array_intersect_key($v, $arr[$key]); } return $arr; } public function intersect2nd($arr1, $arr2, $key) { foreach($arr2 as $v) $tmpArr[] = $v[$key]; foreach($arr1 as $k=>$v) if(in_array($v[$key], $tmpArr)) $arr[$k] = $v; return $arr; }}?>
ネストの書き方を学びましょう。配列の反復?
ネストされた配列の反復を記述する方法は?
それは私が考えていることではありません。あなたも貢献できます
ネストされた配列はどのようなものですか?
キーを考慮しない swapRowCol メソッドは、キーを考慮する swapRowColWithKey メソッドよりも複雑なのはなぜですか?
<?phpinclude('squareArray.php');//$array = array('id' => array('001', '002', '003'),'name' => array('张三', '李四', '王五'),'age' => array(22, 23, 11)); $array = array(array('id' => '001', 'name' => '张三', 'age' => 22),array('id' => '002', 'name' => '李四', 'age' => 23),array('id' => '003', 'name' => '王五', 'age' => 11)); $a = array( 0 => array('action_id' => 3), 1 => array('action_id' => 2), 2 => array('action_id' => 1), 3 => array('action_id' => 7), 4 => array('action_id' => 11),);$b = array( 0 => array('action_id' => 3, 'type' => 0, 'order_num' => 67), 1 => array('action_id' => 2, 'type' => 0, 'order_num' => 66), 2 => array('action_id' => 1, 'type' => 0, 'order_num' => 65), 3 => array('action_id' => 7, 'type' => 0, 'order_num' => 64), 8 => array('action_id' => 14, 'type' => 0, 'order_num' => 40), 13 => array('action_id' => 11, 'type' => 0, 'order_num' => 30),);//交换矩阵数组一维和二维键值例子$obj=new squareArray();$arr=$obj->swapRowCol($array);var_export($arr);//交换矩阵数组一维和二维键值例子(保留数值键名)$arr=$obj->swapRowColWithKey($b);var_export($arr);//根据指定key求二维数组矩阵数组交集(一维key)$key='action_id';$aa=$obj->swapRowCol($a);$bb=$obj->swapRowCol($b);$arr = $obj->intersect1st($bb, $aa, $key);//$b和$a自己定义吧,我懒得输入了$arr=$obj->swapRowCol($arr);var_export($arr);//根据指定key求二维数组矩阵数组交集(二维key)$key='action_id';$arr = $obj->intersect2nd($b, $a, $key);//$b和$a自己定义吧,我懒得输入了var_export($arr);exit;?>
public function swapRowCol($inArr) { return call_user_func_array('array_merge_recursive', $inArr); }
入れ子配列とはどのようなものですか。のように?
では、キーが考慮されていない場合は、それは考慮されていません。 #5 のメソッドを使用するのが適切です
私は 1 年間 php を使ってきましたが、このオブジェクトを初めて目にしました
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
学んだ、マークする
共有してくれてありがとう
とても良いです。まずは集めてください
とても混んでいます。改行、中括弧。
とても混んでいます。改行、中括弧。
モニターは 1920 ピクセルなので、改行がさらに混雑します
ぜひ学びに来てください
$mit = new MultipleIterator(MultipleIterator:: MIT_KEYS_ASSOC);
なんて変化だ... ...
この文はどういう意味ですか
良いもの、集める価値があります
私は 1 年間 php を使ってきましたが、このオブジェクトを初めて見ました
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); 以上です、ああ...
この文はどういう意味ですか
マニュアルの SPL の章を確認してください
php5.5 では array_column 関数が追加されています、これは使用できます
私も昨日の昼に質問に答えて、マニュアルを見る前に調べましたが、よく見ると使ったことがないような気がしました。新しく追加されたことに気づきました
これは良いですね、多くのフィルターとトラバーサルが減ります
返信をくれた人はもう削除されましたか?
自分で書くのは簡単です
public function swapRowCol($inArr) { return call_user_func_array('array_merge_recursive', $inArr); }Array
(
[0] => 3
[1] => 2
[2] => 1
[3] = > 7
[8] => 14
[13] => 11
)
初心者、まだわかりません。
マークして、時間があるときに見てください
マスター、技術的なポイントがたくさんあります。 行きます。 。 。 1ヶ月プレイしてもまだ200ポイント未満です。
私たちは皆素晴らしい人です、それについて学んでください、ありがとう
とてもたくさんのポイント
通りがかりに見に行きました。 。 。 。 。
学んで学んでください
コレクション…………
共有してくれてありがとう、学びました
共有してくれてありがとう!私たちはまだまだ学び続ける必要があります!
学びました。 。 。 。 。やあ、私たちはとても弱いです
朝早くから良いことがあります、投稿者に感謝します
投稿者を助けてください php SQL インジェクションの脆弱性が機能しません。 。