配列データを置き換える

このQ&Aのポイント
  • 配列データを繰り返し処理しながら置き換える方法について相談です。
  • 既存の配列とポストされた配列を比較して一致しているデータはそのまま、一致していないデータは置き換える処理を行いたいです。
  • for文やarray_splice()を使用して配列データの置換を行う方法についてアドバイスをお願いします。
回答を見る
  • ベストアンサー

配列データを置き換える

こんにちは。お世話になっております。 タイトルにあるように、配列のことでお伺いしたいのですが、 既に存在する配列($array1)と、ポストされた配列($array2)があるとします。 $array1=array("佐藤","田中","鈴木","吉田","加藤","岡田"); $array2=array("佐藤","佐々木","鈴木","吉田","岡田","加藤"); そこで、元の配列をポストされた配列に置き換えるようなものを作りたいのですが(実際は置き換えるというより、配列内を修正という感覚で行っています)、for文を用い配列内のデータ数を繰り返し処理を行いながら、array_splice()などを使いながら、ポストされたデータから元の配列と一致していれば、そのまま新規配列にセット。一致しなければ、ポストされたデータをセット。という具合に行うべきか?と、ソースを記述している段階なのですが、もっと効率のよい方法はないものか?と思い、皆さまにアドバイスいただきたく投函させて頂きました。 上手く説明できずに申し訳ありませんが、ご指導頂戴出来れば幸いです。 宜しくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>一致していれば、そのまま新規配列にセット。一致しなければ、ポストされたデータをセット。 それってすなわち一致していても指定なくてもポストされたデータを使うって ことじゃないですか? よく仕様を考えてみてください

mayu_chap
質問者

お礼

yambejpさんへ こんばんは。お世話になっております! 元の配列は、テキストファイルから取り出したデータを配列にしたものですが、ただ単純に配列を置き換える(※)という感じで宜しいのでしょうか? そのような気もするのですが、なんか難しく考えすぎているのか、一言皆さんから助言をいただければ幸いです。 ※先の例題で例えるなら、array2を、array1に代入したものをテキストファイルに保存という流れ?で宜しいのですよね?

mayu_chap
質問者

補足

yambejpさんへ こんにちは。お世話になっております。 無事解決できました。難しく考えすぎていたようです。 ご意見ありがとう御座いました。

関連するQ&A

  • 配列の中身で、データを検索したい

    いつもお世話になっております。 あるデータがPOSTされたとき、そのデータが配列のワードを含むかどうかを検索したいのですが、総当りのeregでは非効率です。(ワードが多いため) 一度の処理でPOSTされたデータ(文字列)が配列のワードを含むかの判断をするとき、何か効率のよい方法はないでしょうか? たとえば、in_arrayで前方一致ができたなら、それに越したことはないですね。でもin_arrayは完全一致なので今回は使えないです。 よろしくお願いします。

    • 締切済み
    • PHP
  • (EXCEL)あるもの一覧

    EXCELでデータベースに存在する値を一つずつ取り出して、並べることって可能ですか? 例) ------------------ 1 佐々木 2 佐々木 3 石田 4 鈴木 5 山田 6 加藤 7 加藤 8 佐藤 9 佐藤 10 佐藤 11 渡辺 12 石田 13 山田 14 佐々木 15 鈴木 16 鈴木 17 鈴木 18 山田 19 山田 20 渡辺 21 佐藤 22 加藤 23 石田 24 佐々木 ----------------------- ↓ ----------------------- 1 佐々木 2 石田 3 鈴木 4 山田 5 加藤 6 佐藤 7 渡辺 ----------------------- 一行だけのピポッドテーブルをつくり、値だけを得ることは可能でしたが、 リアルタイムに変化するものが欲しいので 関数や計算を使ってなんとかできないでしょうか?

  • 配列をほかの配列の値で複数のグループに分けする(新しい配列を作る)には

    配列をほかの配列の値で複数のグループに分けする(新しい配列を作る)にはどうすればよいのでしょうか? 以下のような配列があります。 $sensyu = Array( [0] => Array([IDs] => 1 [usName] => 小林 [uPosition] => センター) [1] => Array([IDs] => 2 [usName] => 山田 [uPosition] => ガード) [2] => Array([IDs] => 3 [usName] => 鈴木 [uPosition] => フォワード) [3] => Array([IDs] => 4 [usName] => 佐藤 [uPosition] => センター) [4] => Array([IDs] => 5 [usName] => 小林 [uPosition] => ガード) ) この配列を、別の配列($edited)の値でグループ分けしたいです。 例: $edited = array(2&4,1&5); $editedに[IDs]の値があるものはグループA($groupA)値が無いものはグループB($groupB)にする。 グループAは , でグループ分け($groupA[0],$groupA[1])となるようにする。 結果 $groupA = Array( [0] => Array( [0] => Array([IDs] => 2 [usName] => 山田 [uPosition] => ガード) [1] => Array([IDs] => 4[usName] => 佐藤 [uPosition] => センター) ) [1] => Array( [0] => Array([IDs] => 1 [usName] => 小林 [uPosition] => センター) [1] => Array([IDs] => 5 [usName] => 小林[uPosition] => ガード) ) ) $groupB = Array( [0] => Array([IDs] => 3 [usName] => 鈴木 [uPosition] => フォワード) もしくは$groupBを作らず元の配列を $sensyu = Array( [0] => Array([IDs] => 3 [usName] => 鈴木 [uPosition] => フォワード) とする。

    • 締切済み
    • PHP
  • エクセルで年代別の平均点の求め方について

    エクセルでとある年代毎に得点平均を小数点第一まで求められる関数はどういったものがありますでしょうか。 例)40歳以下の得点の平均  A(名前) B(歳) C(点) 1佐藤 20   60 2鈴木 25 45 3加藤 45 90 4佐々木 80 62 5井上 54 65 6吉田 41 70 7岡田 49 20 8高橋 37 51 9 清水 33 88 10 田中 26 63 使用環境はoffice2007と2003です。

  • 連想配列/オブジェクト? どちらなのか教えて

    ・色々やっている内よく分からないデータになったので、連想配列/オブジェクト? どちらなのか教えてください ■前提オブジェクト var t1 = { key1: '佐藤' , key2: '鈴木' }; ■配列作成 var t2 = new Array(); ■配列にオブジェクトを格納? t2[t1['key1']]=t1['key2']; console.log(t2); //[佐藤: "鈴木"] ■アクセスしてみる console.log("t2['佐藤']"); //鈴木 console.log(t2[0]); //undefined ■質問 ・t2[0]は、なぜundefined? ・t2配列0番目に「佐藤: "鈴木"」というオブジェクトが入っていると思ったのですが… ・t2は、連想配列/オブジェクトの何れでしょうか? ・挙動から推測するとオブジェクトっぽいのですが、外側のかっこが[]でもオブジェクトなのでしょうか? ・外側のかっこが[]は配列で、外側のかっこが{}はオブジェクトと思っているのですが…

  • 2つの連想配列を比較して一致するものを出力

    下記のような連想配列が2つあります。 それらの配列の3つ目の電話番号(070-0000-000等)のみを比較して一致する連想配列を配列にして出力するようなプログラムを考えています。 連想配列同士を比較する方法が見つからなかったため、どのように書いたら良いのかわかりません。 ご教授お願い致します。 【既存の連想配列】 <?php $first = array(     'test_1' => array(         0 => '山田太郎',         1 => 'ヤマダタロウ',         2 => '090-0000-0000',     ),     'test_2' => array(         0 => '田中次郎',         1 => 'タナカジロウ',         2 => '080-0000-0000',     ),     'test_3' => array(         0 => '佐藤三郎',         1 => 'サトウサブロウ',         2 => '070-0000-0000',     ), ); $second = array(     'test_1' => array(         0 => '鈴木四郎',         1 => 'スズキシロウ',         2 => '050-0000-0000',     ),     'test_2' => array(         0 => '佐藤五郎',         1 => 'サトウサブロウ',         2 => '070-0000-0000',     ),     'test_3' => array(         0 => '安藤六郎',         1 => 'アンドウロクロウ',         2 => '000-0000-0000',     ), ); ?> 【比較後の配列(例)】 $result //に結果を格納 この$resultの中身は、 array('佐藤五郎','サトウサブロウ','070-0000-0000'); のような感じです。

    • ベストアンサー
    • PHP
  • データの配列

    POSTで送られたデータから配列を作りたいのです。 下記はPOSTのデータをprint_r($_POST)で全て表示していますが、 この中から[NO0~11]までを array([0]=>11 [1]=>6 ~)というような形で配列として表示したので すが、方法が分かりません。 Array ( [N00] => 11 [NAME0] => a [N01] => 6 [NAME1] => b [N02] => 9 [NAME2] => c [N03] => 3 [NAME3] => d [N04] => 12 [NAME4] => e [N05] => 10 [NAME5] => f [N06] => 1 [NAME6] => g [N07] => 5 [NAME7] => h [N08] => 2 [NAME8] => i [N09] => 7 [NAME9] => j [N010] => 4 [NAME10] => k [N011] => 8 [NAME11] => l)

    • 締切済み
    • PHP
  • 多次元配列で特定キーが重複している箇所をランダムで

    PHP多次元配列で特定キーが重複している箇所をランダムで1つだけ表示したい ・id基準 ■元配列 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [2] => Array     (       [id] => 5       [name] => "鈴木"       [age] => 12     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ■取得したいランダム結果配列例1 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     ) ■取得したいランダム結果配列例2 Array (   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ※1次元目のキーは元キーを維持していなくても構いません

    • ベストアンサー
    • PHP
  • クッキーに配列データを

    こんばんは。お世話になってます。 クッキーに配列データを保存したく、調べながら試行錯誤を繰り返していますが行き詰まってしまい、 アドバイスを頂戴できればと投函させて頂きます。 やりたいことは、掲示板にて書き込まれた内容をDBで管理しているのですが、各スレッドごとに1つのファイル(ページ)にて 呼び出しており、ページを閲覧した際、過去に1度でも閲覧した内容はカウント(訪問者数)せず、初めて閲覧した時のみ カウントするといった内容にしたいのですが、DBに登録されているデータも複数あることから、 DBに登録されているデータの連番を、配列データ(クッキー名:view)としてクッキーに登録しようと 考えるところまで至っていますが、うまく登録することが出来ずにいる次第です。 他にもっと適切なやり方があったら、そのご意見も頂戴したいのですが、以上のような考え方の場合、以下のスクリプトにおいて、 どこが不適切なのかをご指摘いただければ幸いにおもっております。 以下が、現在テスト中のスクリプトです。 $view_array = $_COOKIE["view[]"]; $view_array = unserialize(base64_decode($view_array)); //print_r($view_array); if(isset($_COOKIE["view[]"])){ if(!in_array($pno, $view_array)){ $count = $count+1; $sql = "update name set count = $count where no ='$pno'"; mysql_query($sql); $view_array[] = $pno; setcookie("view[]", base64_encode(serialize($view_array)), time() + 60*60*24*360, "/"); } }else{//クッキーに該当する配列がなかった場合 $count = $count+1; $sql = "update name set count = $count where no ='$pno'"; mysql_query($sql); $view_array = array($pno); setcookie("view[]", base64_encode(serialize($view_array)), time() + 60*60*24*360, "/"); } 以上、お忙しいなか恐縮ですが、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 配列の差し替えについて

    配列について勉強をしています。 データを差し替えるプログラムを考えていて色々試してみたのですが 下記のような感じでうまく機能しません。 ・指定した箇所に追加書き込みになってしまう。 ・指定箇所が削除され別の箇所に追加書き込みになってしう。 ・まったく機能しなくなったりと困っています。 こんな感じのイメージ結果にしたいのですが・・・ -------------------------------------- dat.csvの中みが下記とします。 サンプル01 サンプル02 サンプル03 サンプル04 ↓↓↓↓↓実行結果↓↓↓↓↓ サンプル01 サンプル02 サンプル05 サンプル04 -------------------------------------- ソース -------------------------------------- 外部からの呼び出しで値が「サンプル03」です。 $edit_data=$_GET["sid"]; $test = "サンプル05"; if($_POST["regist"]){ $Data=file("data.csv"); for($i=0; $i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($edit_data==$line[1]){ array_splice($Data,$i,1,$test); $fp=fopen("data.csv","w"); flock($fp, LOCK_EX); foreach($Data as $item)fputs($fp,$item); fclose($fp); } } } -------------------------------------- まず、外部から「サンプル03」という値を呼び出し $edit_data==$line[1]でCSVデータと照合させました。 一致したらその箇所を「array_splice」で置換えるようにしているはずなんですが・・・ なんともうまく機能しません。。。。 どなたか、知恵を貸していただければと思い投稿させて頂きました。 宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう