- 締切済み
配列同士を結合させて、計算させる方法
例えば、以下のような2つの配列があったとします。 $array1 = Array( [0] => Array( [primarykey] => 1 [username] => takeo [math] => 87 [his] => 90 ) [1] => Array( [primarykey] => 2 [username] => youko [math] => 69 [his] => 56 ) ) $array2 = Array( [0] => Array( [username] => youko [math] => 75 [his] => 89 ) [1] => Array( [username] => takeo [math] => 65 [his] => 37 ) $array1に$array2のデータを入れていくような、上手い方法は無いでしょうか? $array2の[username] => takeoの[math] => 35を$array1の[username] => takeoの[math] => 87に足して、最終的に[math] => 122としたいのです。 array_mergeはダメだし、do~while、foreach、色々と考えているのですが……。 どなたか助けて下さい! お願いします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- foreachで配列を作る
$array = array("id","name","address","tel","point","a1"); $res = $db->query($sql); //sqlのクエリー while ($row = $res->fetchRow( DB_FETCHMODE_ASSOC )) { $data_list[]=array( $array[0]=>$row["$array[0]"], $array[1]=>$row["$array[1]"], $array[2]=>$row["$array[2]"], $array[3]=>$row["$array[3]"], $array[4]=>$row["$array[4]"], $array[5]=>$row["$array[5]"]); } をforeachを使って $array = array("id","name","address","tel","point","a1"); $res = $db->query($sql); //sqlのクエリー while ($row = $res->fetchRow( DB_FETCHMODE_ASSOC )) { foreach(~){ //処理 } のようにかきかえたいのですがどうしたらいいでしょうか?foreachをしらべていろろやったのですがうまくいきません。よろしくおねがいします。 ちなみに$data_list[]の配列はArray ( [0] => id [1] => name [2] => address [3] => tel [4] => point [5] => a1 ) Array ( [0] => Array ( [id] => 0 [name] => ここあ [address] => 東京 [tel] => 2 [point] => 2 [a1] => 2 ) [1] => Array ( [id] => 1 [name] => 太郎 [address] => 東京 [tel] => 3 [point] => 5 [a1] => あ ) [2] => Array ( [id] => 4 [name] => 五郎 [address] => 東京 [tel] => 0 [point] => 1 [a1] => あああああ ) [3] => Array ( [id] => 5 [name] => 士郎 [address] => 神奈川 [tel] => 26 [point] => 5 [a1] => ああああああああああ ) …となります。
- 締切済み
- PHP
- 多次元配列の計算方法について
PHP習い始めたばかりで困っているので教えてください。。 多次元配列の要素ごとの計算ループが分からないです。 前提:多次元配列$tajiには15個の要素があり、それぞれに0か1が大量に入っています(具体的には、チェックボックスの回答に因っていて、回答される度に0か1がDBを経由して増えていく感じです) $taji[$rone][] = $row[$rone]; //var_dumpで確認したところちゃんと多次元配列として各要素に値が入っていました。 foreach($taji as $val1){ foreach($val1 as $val2){ print array_sum($val2); }; } …だとエラーになってしまいます。。 希望としては、要素ごとに合計を計算して表示してほしいのですが、 array_sumは多次元配列を無視してしまうのでしょうか?? 全く分からず困っているので、どなたかご教授よろしくおねがいします。
- ベストアンサー
- PHP
- PHPの基礎的なことなんですが・・・
初心者です。とある参考書をみてdo whileを習っています。 以下のスクリプトがなぜ、条件文にあてはまるのか知りたいわけです。 $db_data[0] = array("username" => "abcdefg0"); $db_data[1] = array("username" => "abcdefg1"); $db_data[2] = array("username" => "abcdefg2"); //ここまでは多次元配列しているな~って感じくらいでわかります。 do{ $flg = FALSE; //$flgには、なにもいれない。 $username = md5(uniqid(rand(),1)); //ランダムにIDを作っているんだな~って感じです if($db_data[0]["username"] == $username){ $flg = true;} if($db_data[1]["username"] == $username){ $flg = true;} if($db_data[2]["username"] == $username){ $flg = true;} //問題はここなんですが、なぜ比較演算子「==」で$flg = trueに なるのかがわかりません。なぜ多次元配列で作られた"username"とmd5で 作られた$usernameが一致するのでしょうか? } while ( $flg ); print "あなたのユーザIDは" . $username . "です。";
- ベストアンサー
- PHP
- PHPの多次元配列について
HTMLでホームページを作れる以外はプログラムに関しほぼ素人です。 環境 XAMPP1.70(最新)にてアパッチなど一括ダウンロード PHP言語にて3×4の表で以下の数値を多次元配列にて作成しようと思っているのですが、当方初心者なもので、 以下のコード(細かい部分は省略しています)、特にforeachがネストになっている部分の処理の流れがいまいちよくわかりません ~~~~~~~~~~~~~~~~~~~~~~~~~ <table border=2> <th>都市名</th> <th>最高気温</th> <th>最低気温</th> <?php $data=array( array("東京"32,25) array("名古屋",45,67) array("埼玉",32,67) array("大阪",86,34) ) foreach($data as $city){ print "<tr>"; foreach($city as $value){ print "<td>{$value}</td>" ●1回目foreachからここまでの流れがいまいち分かりません } print "</tr>"; ?> ~~~~~~~~~~~~~~~~~~~~ 一つ目のforeachにて、配列$dataが指定されていますので外側の配列を処理していくと思うのですが、具体的にどういう順番で処理されていくのでしょうか。 またforeach()の中の"$cityが最終的に$valueに格納という形になっていますが、10~13行目のarray("東京",32,25)とどのような関係で処理されていっているのか教えていただけませんでしょうか。 よろしくお願いいたします。
- ベストアンサー
- PHP
- 配列型の宣言?
こんにちは。 あるサイトで見たphpのサンプルなのですが、 postされた全ての値を配列に格納するもので、以下のような記述がありました。 foreach((array)$_POST as $key => $value){ $array[$key] = $value; } ポストされた全ての値を、配列$arrayに連想配列として格納しているのはわかるのですが、 foreachの、(array)というのはどういう働きをするものなのでしょうか。 これは、$_POSTが配列であるという宣言でしょうか。 それと、postされた値がない場合、$_POSTを配列だと宣言しておくことで、foreachのエラーを回避するような役割もあるのでしょうか。 恥ずかしながら、(array)のような記述をphpではあまり見ないような気がするのですが、なんというキーワード(?)で勉強すれば理解が深められるかもご教授頂けますと助かります。 宜しくお願い申し上げます。
- ベストアンサー
- PHP
- 添字配列をマージする方法はありますか?
<? $a[0]["test"] = Array("Q1","Q2"); $b[0]["test_result"] = Array("A","B"); print_r(Array_Merge($a,$b)); ?> 期待する結果 Array ( [0] => Array ( [test] => Array ( [0] => Q1 [1] => Q2 ) [test_result] => Array ( [0] => A [1] => B ) ) ) 期待する結果にならないので、foreachでぶん回して、 再度格納しています・・ 添字配列をマージできる関数な方法はないでしょうか?
- 締切済み
- PHP
- foreachで多次元配列を生成
こんにちわ。 配列をforeachでループさせて、それを多次元配列に入れていくことは可能でしょ うか? 例えば以下のようなデータがあるとします。 ---meibo.dat-------- c21<>田中<>21<>東京 c22<>佐藤<>22<>大阪 -------------------- ---test.php----------------------------------------------------- <? $list_meibo = file("meibo.dat"); foreach($list_meibo as $temp){ $i=split("<>",$temp); $a=array($i[0] => array("name"=>$i[1],"age"=>$i[2],"ad"=>$i[3]),); } ?> ------------------------------------------------------------------- これでは $a=array("c21"=>array("name"=>"田中","age"=>"21","ad"=>"東京"), "c22"=>array("name"=>"佐藤",age"=>"21","ad"=>"大阪"),); という具合になってくれないでしょうか? これでいくと、配列の最後の要素のみデータに残ります。 どのようにしたらよいでしょうか? ご教授お願いします。
- ベストアンサー
- PHP
- 連想配列のキー値(連番)を基に、別の配列を作るには?
下記のように、キー値の一部に連番を持った連想配列 があるのですが、このキー値と連番で別の配列を 簡単に作る方法は無いでしょうか? もとの配列 $ary = array("item0"=>"x","item1"=>"y","item2"=>"z","data0"=>"o","data1"=>"p","data2"=>"q"); 上の$aryから $item=array([0]=>"x",[1]=>"y",[2]=>"z"); $data=array([0]=>"o",[1]=>"p",[2]=>"q"); のような形の配列を得たいのです。 foreach($ary as $key => $val){ } の構文で、$key値を調べて分断し、新しい配列に pushしていくしかないでしょうか? ※PHP4.3です
- ベストアンサー
- PHP
- 配列をテキストデータから読み込む方法
質問です。 現在テキストデータ(data.txt)に 100 95 80 90 10 といった形で保存しています。 以下のように設定すると objFso = new ActiveXObject("Scripting.FileSystemObject"); myFile = objFso.GetFile("c:\\data.txt"); objTxt = myFile.OpenAsTextStream(1); var DATA = new Array(); do{ DATA = new Array(objTxt.ReadLine()); }while(!objTxt.AtEndOfLine) とした場合、DATAには最後の値しか入っていないのですが どこが間違っているのでしょうか? これはDATAがきちんと配列になっていないということでしょうか?
- 締切済み
- JavaScript
- 不要な配列を消したい
2次元配列で、不要な要素を取り除きたいのですが良い方法が思い浮かばず、どうしたものかと悩んでいます。 一番初めと5番目を消したいのですが、preg_match で日付の2006にマッチしない要素をunsetしてみましたがうまくいきませんでした。 $data = array ( array('<br>'), array("2006 03 22", test), array("2006 03 23", test2), array("2006 03 25", test3), array('') ); $pattern = '/2006/'; foreach($data as $key => $value) { if(preg_match($pattern, $value[$key])) { unset($data[$key]); } } もし方法をご存知のかたおられましたらよろしくお願いいたします。
- ベストアンサー
- PHP
- mfc-l8650cdwの紙詰まりを解消するための方法を教えてください。
- mfc-l8650cdwで起きる紙詰まりの原因や対処法について詳しく教えてください。
- mfc-l8650cdwの紙詰まりトラブルを解決するためのヒントをお教えください。
お礼
>wp_さん いつもありがとうございます。 御蔭で、完全に佳境は越えました。 感謝してもし尽くせないです。 ありがとうございました!!