• ベストアンサー

array_values?

 すみません、初学者ですが、以下の式はどういう意味ですが?  foreach ($array as $i => $value) { unset($array[$i]);  }  特に、これ:$array as $i => $value は何?さっぱり分からない。  お願いします!

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

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

  • ベストアンサー
回答No.1

どちらも、foreach も unset も phpのマニュアルに書いてあります。 簡単な説明をすれば foreach ... 配列要素を処理するために使われるループ処理 >$array as $i => $value 配列 $array を元にループする。 ループの内部では、$value の変数として扱う。 ループの内部では、$i を配列のインデックスとして使う。 unset() ... 指定した変数を破棄する。 質問の内容は、目的はさっぱり良く判らないが、配列 $array の要素一つずつ、破棄している ところでしょう。 まずは、マニュアルを見てみましょう。

参考URL:
http://php.s3.to/man/
goochensi
質問者

お礼

 詳しい説明を掛けてやっと分かりました。どうもありがとうございました。

関連するQ&A

  • array keys について

    すいません。何度かここで質問しているのですが、いまいち分からない部分があります。 既に何十時間も悩んでいて解決しません。初歩的な質問ですがよろしくお願いします。 結果としてk2k3という表示を期待しているのですが・・。 まず、$key2にはk1k2k3という配列が入り、 それからarray_keys($key2)でキーを取得するのですから array_keys($key2)にはynbが配列として入りますよね? つまり [0]=y [1]=n [2]=b となり、 これをin arrayでyという値を探して、あった場合にはunsetで削除。 何がおかしいのかさっぱり分かりません。 すいませんが間違っている部分を教えてもらえませんか? <?php $food["y"]= "k1"; $food["n"]= "k2"; $food["b"]= "k3"; foreach($food as $key1=>$key2){ if(in_array("y",array_keys($key2))) unset($food[$key1]); } ?>

    • 締切済み
    • PHP
  • 不要な配列を消したい

    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
  • Arrayについて

    Dim ar(1 To 6) As Integer Dim i As Integer for i = 1 to 6 ar(i) = i + 1 Next というソースがあり、作成された ar(2,3,4,5,6,7)という配列を、 Array(2,3,4,5,6,7)のようにArray()の中に入れたいのですが上手くいきません。どのようにしたら良いでしょうか? Array(ar)としても駄目でした。

  • array_combine()について

    http://phpspot.net/php/man/php/function.array-combine.html こちらを参考に配列のまとめ方と取り出し方を模索中です。 $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); ↑こちらは、 foreach($c as $key => $value){ ~ } ↑このような感じでそれぞれ取り出せると思います。 ここまではいけました。 この状態で対象が3つ以上になった場合は、どういう対応方法があるのでしょうか。 $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $hoge = array('100', '150', '80'); array_combine()でできるのでしょうか。 他の関数を使うのでしょうか。 不慣れですみません。 アドバイスいただけますとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • arrayである値を持った要素のみを削除するすっきりした方法。

    PHP4で,ある値を持った要素のみを削除したarrayをかえしたいのですが,たとえば,[d]と[e]をいう値をもった要素を削除したい場合, $a = array("a", "b", "c", "d", "e"); $eraseitem = array("d", "e"); $new_a = array(); foreach($a as $value); { if (!in_array($value, $erasesitem)) { $new_a[] = $value; } } とすれば,削除できますが,ほかに何かいい方法はないでしょうか。(デフォルトの関数などを使用してすっきりとできないのでしょうか。) 詳しい方,よろしくお願いします。

    • ベストアンサー
    • PHP
  • php配列確認に関して

    $name = array( '0' => 'test', '1' => 'test1', '2' => 'test2', '3' => 'test4', '4' => array( '0' => 'e', '1' => 'r', '2' => 'y', '3' => 'i', ), ); foreach ($name as $key => $value) } print $value; } このうえの配列を確認したいのですが print $value;でやると 4がarrayとなってしまいます 4の中身を確認したいのですか foreachの下に何を書けばいいでしょうか?

    • ベストアンサー
    • PHP
  • array関数につきまして

    すみません。PHPの初心者でございます。 下記のコードの中に (array)$anq_list とありますが、 個人には、arrayの使い方は、array(---)のような感じだと思っていましたが、 下記のサンプルでは、(array)となっております。 これはどのような意味になるのでしょうか。 なお、(array)をつけたバージョンと、つけないバージョンでテストしたところ、 どちらもかわりませんでした。 個人的には、無くてもいいかと思いましたが、何か、別の意図はありますでしょうか。 <?php //libsフォルダにある共通関数を読み込む require_once("../../../../libs/function.php"); //初期化関数を呼び出す init(); //ログイン状態をチェックする関数を呼び出す loginCheck(); //データベースに接続する関数を呼び出す $db = db_connect(); //アンケートデータを取得する $sql = "SELECT * FROM anq_t ORDER BY create_datetime DESC"; $anq_list = $db->getAll($sql,DB_FETCHMODE_ASSOC); //好きな動物の「,」区切りのデータを配列データに変換する処理を行う foreach ($anq_list as $key => $value ) { $anq_list[$key]["animal"] = explode(",",$value["animal"]); } //Smartyを生成 $smarty = new MySmarty(); $smarty->assign("anq_list",$anq_list); $smarty->assign("sex_value",getSexList()); $smarty->assign("age_value",getAgeList()); $smarty->assign("animal_value",getAnimalList()); $smarty->display("admin/anq_result.tpl"); ?> 以上、お手数をお掛けしますが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • fetch_arrayで期待する値が返ってこない

    こんにちは PHP初心者です。 ハマってしまったので助けてください。 先にソース書きます↓ ------------------------- $sqlStr = "SELECT fld1 FROM table1 WHERE fld2 = '$aaa' AND fld3 = '$bbb' AND fld4 = '$ccc'"; $rsd = mysql_query($sqlStr, $Conn); $rsd_rows = mysql_num_rows($rsd); echo "rsd_rows= ".$rsd_rows."\n"; $rsd_array = mysql_fetch_array($red, MYSQL_ASSOC); foreach( $rsd_array as $key => $value ) { echo "Key= ".$key." Value= ".$value."\n"; } ------------------------- 結果↓ rsd_rows= 50 Key= ABC Value= XYZ ------------------------- $rsd_rowsには50が返されおり、それは正しい数値です。 ところが$rsd_arrayはなぜか結果の最初の一行しか返されていません。 どこかを間違ってるのはわかりますが、どこが問題なのかわからないです。 $rsd_arrayに50行分のデータすべてを取得するには、どうしたらいいですか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 特殊文字をHTMLエンティティに変換する処理

    下記の処理とhtmlspecialchars関数との違いはなんですか? 2次元配列がよくわかりません。 function entity_assoc_array($assoc_array) { foreach ($assoc_array as $key => $value) { foreach ($value as $keys => $values) { // 特殊文字をHTMLエンティティに変換する $assoc_array[$key][$keys] = entity_str($values); } } return $assoc_array; }

    • ベストアンサー
    • PHP
  • メソッドの処理の意味

    PHP Version 5.3.1を使用しています。 Zend Frameworkというフレームワークを使用しているのですが、 http://manual.zfdes.com/ja/zend.db.profiler.html http://ideone.com/JekM0d ┬ Zend │└ Db │ ├ Profiler │ │└ Query.php Query.phpというファイルのクラスZend_Db_Profiler_Query内のbindParamsメソッド /** * @param array $param * @return void */ public function bindParams(array $params) { if (array_key_exists(0, $params)) { array_unshift($params, null); unset($params[0]); } foreach ($params as $param => $value) { $this->bindParam($param, $value); } } の if (array_key_exists(0, $params)) { array_unshift($params, null); unset($params[0]); } この部分は具体的に何をしている処理なのでしょうか? 配列内に数値の0があるかを調べて、 存在したらunshiftで先頭にnullを挿入する。 でもunsetでその挿入した行(インデックスが0なので)を削除する。 というふうに自分は解釈しているのですが、もしそれだと array_unshiftでnullの行を挿入する意味が分かりません・・・ そもそもなぜarray_key_existsで0があるかを調べる必要があるのでしょうか? できればこのメソッドの具体的な使用も含めてアドバイス頂けないでしょうか?

    • 締切済み
    • PHP