• ベストアンサー

PHPの配列で添え字を1から始める方法は?

$firstquarter = array(1 => 'January', 'February', 'March'); というようにすれば1から始まるのは知ってるんですが、 $firstquarter[] = 'January'; $firstquarter[] = 'February'; $firstquarter[] = 'March'; というように一個ずつ追加していきたい場合や、「explode」で分割して一気に入れた場合に、1から始める方法が分かりません。 何かやり方はあるのでしょうか?

noname#250248
noname#250248
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

$a = array(); $a[]="dmy"; unset($a[0]); $a[]="foo"; $a[]="bar"; $a[]="baz"; var_dump($a); $b = explode(" ","foo bar baz"); array_unshift($b,"dmy"); unset($b[0]); var_dump($b);

関連するQ&A

  • PHPで、"内は分割せずに、配列に分割する方法はありませんか?

    explodeや正規表現など、いろいろ考えたのですが、スマートな方法が見つからず、ヒントでもいただけるとありがたいです。 やりたいことは、 ABC 123 "BBB HHH" 456 789 "あい うえお" DDD という文字列を分割して配列に入れたいのですが、 "内は1つの文字列として分割せずに取り出したいのです。 結果として、 array( 0=>"ABC", 1=>123, 2=>"BBB HHH",// 元の"があってもなくてもいい 3=>456, 4=>789 5=>"あい うえお", 6=>DDD ) というものを得たいわけです。 単純に explode や split ではダメですし、正規表現だとどうなるのやらと。 "内の (スペース)を他のモノに置き換えて、explodeした後もとにもどす、とかでしょうか。他に何か手がありましたら、ご教示お願いします。

    • ベストアンサー
    • PHP
  • c言語のポインタ配列

    下記のようなポインタ配列が合った場合、 char *mnthp[4] = { "January", "February", "March", "April" }; Februaryに別の文字列を代入したいのですが、どうすればよいのでしょうか?

  • phpで、配列の値が意図せず変わってしまいます。

    環境はphp4です。 for、もしくはforeachを使って配列の中身を変えたいと思っています。 $array1 = array(123csv, 456csv, 789csv); for($a = 0; $a <= count($array1) -1; $a++){ $array2[] = "a" . $array1[$a]; } echo $array1[0]; echo $array2[0]; 上記の出力結果がなぜか異なり困っています。 array1[0]は「123csv」、 array2[0]は「a113csv」、もしくは「a12300v」 などとなってしまいます。 先頭に「a」を付加しない場合も「113csv」、もしくは「12300v」という結果です。 ちなみに$array1はexplodeを使って空白文字をを分割して作成した配列です。 これなバグなのでしょうか。 原因、回避策など、いろいろ調べましたが検討がつきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 文字分割で配列に。

    こんにちは。 先日よりPHPにて文字列を分割し配列する事に悩んでいます。 質問内容としましては、 $str = "文字","1,2,3","テキスト" を Array ( [0] => 文字" [1] => "1,2,3" [2] => "テキスト" ) の様に配列にしたいと思っています。 今までは、sprit(",", $str) で分割していましたが、PHP 5.3.0 で 非推奨となったことで explode(",", $str) に変更。 その後今回の様なデータは無く問題ありませんでしたが、新しくデータを読み込みした時、ダブルクォートの中にコンマがあり、 Array ( [0] => 文字" [1] => "1 [2] => 2 [3] => 3" [4] => "テキスト") と分割され、エラーとなりました。 色々、「Sprit」「PHP 分割 ダブルクォーテーション」等で検索しているにも関わらず、希望の情報がヒットしませんでした。 改善方法若しくは情報の記載されておりますサイトがあればご誘導いただければ幸いです。 初歩的な質問かと思いますが、お願い致します。 サーバの種類: MySQL サーバのバージョン: 5.5.42 - Source distribution PHP/5.6.10

    • ベストアンサー
    • PHP
  • PHPでの配列を分割する方法を教えて下さい

    私はPHPを始めたての初心者です。 現在、私は2chビューワーを作って居ます。 まず、datを読み込み、explodeで<>を条件に分割しました。 ここからメール欄、名前欄、ID、BE、内容などを分けて別の変数の配列に分けて入れたいのですが、良い方法が思いつかないのです、どなたか教えて頂けないでしょうか。 現在のスクリプトを貼ります。 $dat = @file_get_contents($dat0); #datの取得 $dat_bunkatu = explode("<>", "$dat"); $dat0はdatのアドレスです。 宜しくお願いします

    • ベストアンサー
    • PHP
  • PHPのようにスマートに配列の配列など記述する方法が

    PHPの場合、データ構造ですが以下のようになっています。 $a = array( "test1" => array( array(1,1), array("x", 2) ), "test2" => array( array(3,2), array("y", 1) ), ); これをエクセルVBAの場合、Scripting.Dictionaryを使えば連想配列が 可能ですが、PHPのようにスマートに配列の配列など記述する方法が わかりません。 Dim dic As Scripting.Dictionary set dic = New Scripting.dictionary dic.Add "test1", ???????????????? dic.Add "test2", ???????????????? スマートにデータ構造を実現できる方法が知りたいです。

  • どうしてMarchが3月ですか.

    どうしてJanuaryとFebruaryが1月と2月になったのですか。その前はMarchが一月でした。そして10ヶ月しかありませんでした。どうしてJanuaryとFebruaryをDecemberのあとに11月12月とせずに,1月2月としたのですか。

  • 【PHP】配列を連想配列に

    $m = array('a', 'b', 'c'); この配列 $m をもとに $n = array(  'a' => array(   'b' => array(    'c' => array()))); 上のような連想配列 $n をつくりたいのですが、 $n = array(  $m[0] => array(   $m[1] => array(    $m[2] => array()))); 要素の数が固定のときは、これでもいいのですが、数が変動する場合に対応できません。 何か方法があれば教えてください。

    • ベストアンサー
    • PHP
  • 英語の月を覚える歌、January,February,March~があれば教えて下さい。

    英語で1週間を覚える歌はよく聞きますが、January,February,March等monthの名前を覚える歌があれば教えて下さい。音程もドレミで教えていただけると嬉しいです。よろしくお願いします。

  • VBからDLLへ多次元配列を渡す/配列の添え字

    C++で作ったdllにVBAから配列を渡して、計算結果を再びVBAに戻して、アウトプットはVBAで、ということをしています。(経験豊富な方への相談です。) 具体的には、渡したい配列の先頭アドレスをlong型で記憶し、そのlong型の配列を受け渡ししています。 ただ、ご存知の方が多いかもしれませんが、VBAとC++では配列の添え字の順序が逆になっており、非常に面倒です。どういうことかといいますと、 Dim array(0 to 4, 0 to 9) as long をdllに渡し、array(2,6)を参照したい場合、C++では(Cでの配列名をc_arrayとし、これに先頭アドレスを入れると)、 c_array[(4+1)*6 + 2 ]; としなければならないと思います。これをプリプロセッサで #define C_ARRAY(a,b) c_array[(4+1)*b + a] としたらVBでの配列の感覚で扱えますが、この擬似配列C_ARRAY(a,b)を関数に渡すときなどは結局同じ混乱が再び生じることになってしまいます。 これを、何らかの方法で、簡潔に解決することはできないものでしょうか? VBA(エクセルを念頭においています)のほうで配列の添え字の順序をC++のそれに沿うように変更できたりしたら非常にうれしいですが、無理でしょうか?