- 締切済み
連想配列の要素を追加
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
追加用の配列を用意してマージするってのは? <?PHP $a = array(); $a['yy'] = 'YY'; $a['zz'] = 'ZZ'; $b['xx'] ='XX'; $a=array_merge($b, $a); print_r($a); ?>
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
$a['xx'] = 'XX'; ksort($a); もしくは array_splice($a, 0, 0, array('xx' => 'XX')); あたりですか?
関連するQ&A
- array_randで要素が数字の場合の処理方法
PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。
- ベストアンサー
- PHP
- 深い要素の取り出し方
下のような場合、一般的にはforeachを使うと思いますが、 $sample[cc]->[0]->[xx]の要素である「さ」だけを取り出す場合はどのようにしたら取り出せるのでしょうか? $sample [aa] => あ [bb] => か [cc] => Array ( [0] => Array ( [xx] => さ [yy] => た ) [1] => Array ( [xx] => な [yy] => は ) )
- ベストアンサー
- PHP
- 配列の要素を表示しない
PHP初心者です、宜しくお願いいたします。 下のような配列を表示させるソースを書きましたが、要素を表示しません。 どこが間違っているのかさっぱり分かりません。誰かお助けください。 <?php $color3 = array(0 => " red ", 1 => " green ", 2 => " blue "); foreach($color3 as $key => $val) { echo "現在の添え字は ". $key . "<br/><br/>"; echo "現在の要素は ". $Val . "<br/>"; } ?> 以下のような表示になり、要素が表示されません。 現在の添え字は 0 現在の要素は 現在の添え字は 1 現在の要素は 現在の添え字は 2 現在の要素は
- ベストアンサー
- PHP
- 配列の要素の値をループ中に変更して確認したいのですが、下記やり方では、
配列の要素の値をループ中に変更して確認したいのですが、下記やり方では、なぜダメなのでしょうか? $arr = array("値1", "キー1" => "値2", "値3"); foreach($arr as $key => $val){ $arr[$key] = "-{$val}-"; echo $val."<br />"; } foreach($arr as $key => $val){ echo "<br />".$val; } 上のforeachの結果が、下と同じようになると期待したのですが、うまくいきません。 なんで、上のforeachと下のforeachの結果が異なるのでしょうか? foreach文で要素の値が更新されるのは、foreach文が終了した瞬間なのでしょうか。 それとも、値はすぐに更新されているけれども、foreach文の処理(順番に抽出する作業?)は既にスタートしてしまっているので、ループ中に更新されても、途中で反映することはできない、ということなのでしょうか? さっぱり分からないので、誰か教えてください。 「配列の要素の値をループ中に変更して確認したい」というよりは、 「なんで、二つのforeach文で結果が異なるか知りたい」です。
- ベストアンサー
- PHP
- 連想配列のキーを得るには
$xx = array('a' => 'd'); こういう連想配列がどこかで定義されていて、キー名が不明の$xxから唯一のキーである'a'を得るにはどうしたらいいですか? foreach()でできますが、素直に得る方法があると思います。
- ベストアンサー
- PHP
- 配列から特定の語を含むものだけを取り出したいです
var_dump($text); を実行すると array(XX) { [0]=> string(YY) "りんご食べたい。" [1]=> string(YY) "イタリアン食べたい。" [2]=> string(YY) "ごりら見た。" [3]=> string(YY) "雪まつりに行きたい。" [4]=> string(YY) "うさぎ可愛い!!" } という配列があり、そこから $key = array("りんご","ばなな","ごりら","うさぎ"); の単語を含む文章だけ取り出したいです。 以前も同じような質問をし、アンサーをいただき、このように試したのですが、 $key_text = array(); foreach($text as $v1){ foreach($key as $v2){ if(strpos($v1[0], $v2) !== false){ $key_text[] = $v1[0]; } } } var_dump($key_text); array(0) { } と返ってきてしまいます。どこが間違っているか教えて下さい。お願いします。
- ベストアンサー
- PHP
- 関数で定義した配列のソート
お世話になります。 配列のソートは xx = new Array(3, 7, 8, 1); xx.sort(); document.write('xx='+xx+'<br>'); function hikaku(a, b) { return(b - a); } yy = new Array(3, 7, 8, 1); yy.sort(hikaku); document.write('yy='+yy+'<br>'); で、できました。 ここで、 function aitem(name,value,date){ this.name=name; this.value=value; this.date=date; } var goods=new Array( new aitem('b',500,'06/05/01'), new aitem('a',200,'06/07/01'), new aitem('d',800,'06/06/01'), new aitem('c',300,'05/09/01'), ); と、配列goodsを定義します。 そして、例えばvalueで並び替えた配列を取得するなんてことはできないでしょうか。 よろしくお願いします。
- ベストアンサー
- JavaScript
- ある文字を含む文字列のみ配列にする
何度もすみません。 array(XX) { [0]=> array(2) { ["text"]=> string(YY) "りんご美味しい" ["name"]=> string(Z) "あいこ" } [1]=> array(2) { ["text"]=> string(XX) "富士山登りたい" ["name"]=> string(Z) "みほ" } [2]=> array(2) { ["text"]=> string(XX) "動物園行きたい" ["name"]=> string(Z) "なほ" } [3]=> array(2) { ["text"]=> string(XX) "メロン美味しい" ["name"]=> string(Z) "ゆい" } [4]=> array(2) { ["text"]=> string(XX) "お腹すいた" ["name"]=> string(Z) "まこ" } [5]=> array(2) { ["text"]=> string(XX) "数学やだー" ["name"]=> string(Z) "あいこ" } ……… } のような配列$textがあり、そこから["text"]に $keyword = array("りんご","メロン") の文字列を含むものだけ取り出したいです。 今までもらった回答を参考に $key_text = array(); foreach($text as $key => $v1){ foreach($keyword as $v2){ if(strpos($v1[text], $v2) !== false){ $key_text[] = $key; } } } と書いてみたのですが、上手く動作しません。 よろしければどこが間違っているかご指摘ください。 お願いします。
- ベストアンサー
- PHP
- なにがおかしいのでしょうか?
先の質問「プログラムのヒントを下さい」でも扱ったのですが、 apple best apple END apple beer beer END zero child death zero のようなテキストから、ENDとENDの間か、ENDと最初もしくは最後の間の重複した文字列を取り除くスクリプトを書こうと思います。出力例は以下のようになってもらいたいです。 apple best END apple beer END zero child death 自分で頑張って下のコードまで書きましたが動きませんでした。特に、ENDと最初もしくは最後の間 の取り扱いがわかりません。どなたかご教授お願いいたします。 open(IN, "datafile"); @xx = <IN>; @zz = (); foreach $yy (@xx) { if ($yy eq "end"){ @uniq = uniqArray(\@zz); foreach my $value ( @uniq ){ print "$value\n"; } @zz = (); }else{ push(@zz,$yy); } } close(IN); sub uniqArray{ my $array = shift; my %hash = (); foreach my $value ( @$array ){ $hash{$value} = 1; } return( keys %hash ); }
- ベストアンサー
- Perl
お礼
array_splice()にしようと思いました。 ありがとうございます。