【PHP】下らねぇ質問はここに書き込みやがれ 29
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/17(日) 04:26:39ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
001812
2006/09/17(日) 07:52:09ID:???おお!
すごす!
できました!
有難う御座います!
>>17
なるほど、substrが大事なのですが、
ネットで調べまくります!
0019nobodyさん
2006/09/17(日) 07:57:55ID:???http://www.php.net/manual/ja/
0020nobodyさん
2006/09/17(日) 08:04:18ID:???違う!そうじゃないぞぉ!
ちゃんと毎回これがどういうことをしてどういう結果になっているのか
って言うのを理解していかないと良いプログラマンにはなれんのだよ!
002112
2006/09/17(日) 08:05:58ID:???なるほど、今色々調べてたのですが
最初のヒント10文字ってのはそういうことだったんですね、、、。
0022nobodyさん
2006/09/17(日) 10:55:24ID:lKV/vaA2これって XML.phpとRSS.phpのふたつのファイルを読み込むって意味ですか?
なら、$Data=file("data/database.csv");
でdata.csvとdatabase.csv2つのCSVファイルを読み込むことはできますか?
0024えがみボンバイエイ
2006/09/17(日) 11:10:04ID:???一覧を出して自分のサイトのメタタグの参考できるようなサイトにしたいなと。
<html><head><title>メタタグ参考ツール</title></head><body><h1 style="background:#CCCCCC">メタタグ参考ツール</h1>
<?php
//URL
$url = array("http://ega.chu.jp/all","http://www.bb-chat.tv/","http://www.snsnavi.jp/","http://yahoo.co.jp","http://mixi.jp","http://livedoor.jp","http://iki.2ch2.net/");
//$url配列を一個づつ処理
foreach ($url as $value){
//メタタグの内容を取得
$array = get_meta_tags($value);
$array = mb_convert_encoding($array, "EUC-JP", "auto");
//メタタグの内容を表示
echo "<p>サイト名(サイトへリンク):"."<a href=".$value.">サイト名</a>";
echo "<p>サイトのサムネイル:";
echo "<p>サイトの内容:".$array["description"];
echo "<p>サイトのキーワード:".$array["keywords"];
echo "<p>はてなブックマーク数:";
echo "<hr />";
}?></html></body>
今できない事が
1、サイト名を表示させたい
2、文字化けしてる所を文字エンコードで直したい。
3、サイトのサムネイルを自動で表示させたい
4、サイトのURLを外部で書き込みできるようにし、
「url.dat」みたいな外部ファイルから読み取りたい。
と言うことをしたいなと、全部は流石にあれなので一つでもいいので教えていただけると嬉しいです。宜しくお願いします。
0025nobodyさん
2006/09/17(日) 11:24:04ID:lKV/vaA2すいません、2つ以上のファイルを読み込むにはどうしたらいいでしょうか?
$Data=file("data/database.csv"); ???
0027nobodyさん
2006/09/17(日) 12:06:36ID:???$Data[] = file("data/data.csv");
$Data[] = file("data/database.csv");
0028nobodyさん
2006/09/17(日) 12:13:34ID:lKV/vaA2$Data= を $Data[] にすればいいんですね。
ありがとうございました。
0030nobodyさん
2006/09/17(日) 12:46:13ID:???0031nobodyさん
2006/09/17(日) 12:56:58ID:???0032nobodyさん
2006/09/17(日) 13:00:09ID:Zr3tx6hp私A - 同窓会関連のテキストや画像などを自宅サーバにて管理(Linux+Apache+PHP+MySQL)しています
友人B - 同窓会員で自宅PCから接続してきます
Bが複雑な検索をしてきて(私の技術のなさからなのですが、検索に2分ほどかかるとします)
待ちきれずに1分ほどでブラウザの停止や、ブラウザを閉じてしまうなどをしてしまうと
プログラムがecho,printなどで出力しようとしているデータはどこで消えてしまうのでしょうか?
BのPCまで行ってブラウザが閉じているのでそこでなにもせずに消える
Bが要求をやめてしまっているのでAのサーバ内で消える
など漠然と考えてはいるのですが検索などしてみても答えが分かりません
”検索速くしてよ、途中で止めることあるよ”
とか言われて、いろいろと試行錯誤はしているのですが、
ふと、途中で止められたデータはどこに行ってるんだろう?と疑問に思ったのです
こういうのはネットワーク系(?)のスレッドのほうがいいかとも思ったのですが
ご存知の方おられましたらよろしくお願いいたします
0033nobodyさん
2006/09/17(日) 13:10:26ID:???ブラウザ閉じたことはサーバーは知らないから
処理を最後までやって出力→そのデータは誰も受け取らない
ってなるだけ
0034nobodyさん
2006/09/17(日) 13:17:18ID:???ttp://www.php.net/manual/ja/features.connection-handling.php
0036nobodyさん
2006/09/17(日) 17:20:52ID:???trim関数では日本語が扱えないため、全角スペースを消せません。
この場合、どうするのが一番良いでしょうか? 正規表現などでしょうか?
0037nobodyさん
2006/09/17(日) 17:33:09ID:???$str = mb_ereg_replace(' $', '', $str);
とか。実行してないけど
0038nobodyさん
2006/09/17(日) 17:36:11ID:???でよくね?
0039nobodyさん
2006/09/17(日) 17:51:35ID:???0040nobodyさん
2006/09/17(日) 19:05:08ID:Eys1a2Y2どっかにオススメ無い?有料(事業者登録)OK。
今も自分のWEBサーバに事業者登録してるのを入れてるんだけど、
妙に使いにくくて、人に貸しにくい。
ちなみにプログラムなんて書けません。
0041nobodyさん
2006/09/17(日) 19:06:31ID:???004240
2006/09/17(日) 19:07:13ID:Eys1a2Y2思いっきり失礼しました。
0043nobodyさん
2006/09/17(日) 19:27:13ID:???win2000では普通に動かせていたのに
色々なphpインストールtips見てその通りやったのに何回やっても404表示だお(´Д`)
考えられる原因を並べてくださいエスパーたん(*´Д`)
0045nobodyさん
2006/09/17(日) 19:32:08ID:???0046nobodyさん
2006/09/17(日) 20:50:13ID:???$rm = "( | )";
preg_replace("/^$rm+|$rm+$/","", $text);
デフォルトのtrimに全角SPを追加したいだけなら $rm = "( | |\\t|\\n|\\r|\\0|\\x0B)";
textareaとかで各行対象なら "/(?<=\r|\n|^)$rm+|$rm+(?=\r|\n|$)/"
0047nobodyさん
2006/09/17(日) 20:51:43ID:5LNOCvxaその正規表現じゃダメだろ。
前後両方に空白が入っていた場合。
0048nobodyさん
2006/09/17(日) 21:09:27ID:???eregは推奨しないがmb_eregは問題ない。
具体的にはeregがバイナリセーフでなく、且つpreg系関数より大抵10倍前後遅い。
mb_eregはバイナリセーフだし、代用できる関数も無い。
0050nobodyさん
2006/09/17(日) 22:00:51ID:???UTF-8でスクリプト書いてりゃpreg_関数で
/[あ-ん]+/みたいなことは出来るけど?
それとバイナリセーフのソースは?
0051nobodyさん
2006/09/17(日) 22:11:12ID:???用にはなってないだろう、それは。
mb_eregとmb_ereg_replaceは最新版ではバイナリセーフの模様。
mb_ereg_matchはバイナリセーフじゃなかった。
0052nobodyさん
2006/09/18(月) 12:24:53ID:???自分はMELON使っているのですが、携帯にメールができなくて・・・
0053nobodyさん
2006/09/18(月) 12:38:38ID:???0055nobodyさん
2006/09/18(月) 12:50:12ID:???スパム業者扱いされてIPでブロックされてるのかもな。
だったらソフトをいくら変えても無駄だと思う。
0056nobodyさん
2006/09/18(月) 12:52:59ID:9uSI0qsKhttps://ybb.softbank.jp/support/op25b/
http://www.itt-web.net/modules/xeblog/?action_xeblog_details=1&blog_id=445
0057nobodyさん
2006/09/18(月) 13:54:16ID:crSwhLpgFTP関数でログインする際に、パスワードをパラメータに指定するのですが
これって(ファイルを誰かに見られる事はないとは思うけど)例えると「紙にパスワードをメモしておく」のと等しいよね?
大丈夫なのかな?
0058nobodyさん
2006/09/18(月) 14:16:10ID:???セキュリティとしては大穴だと思うけどな。
0059nobodyさん
2006/09/18(月) 14:16:33ID:???サーバのユーザが特定の人しかいないなら問題無いんじゃね
パスワード書いてるファイルにパーミッションなり、MD5にするなり、サーバのセキュリティなりによって違うでしょ。
0060nobodyさん
2006/09/18(月) 14:43:16ID:???DOCUMENT_ROOTより上位のディレクトリに置いておく
くらいは常道かなと思う。
あとパーミッションも他のユーザ・グループでは
閲覧できないようにしてもいいよね。
0061nobodyさん
2006/09/18(月) 17:24:05ID:???そもそもFTPは平文でパスワードが流れるんだから、心配してもしょうがない。
気になるのなら、SFTPやSCPを使うこと。
0062nobodyさん
2006/09/18(月) 20:23:41ID:???いいたいことはわかるけど、より正確には、
ネットワーク上に平文で流れることと、
ソースコード中にパスワードが平書されていることは、
次元が違う話でしょ。
ソースコード中にユーザID/パスワードを書きたくない。
もしくは最小限にしたい。という発想は大いに結構だと思いますが。
ようは、そこをがんばってもFTPである以上平文パスワードという
限界があるんだよ。ということを知ってればよいと思います。
0063nobodyさん
2006/09/18(月) 21:24:29ID:S7kQJtixregister_shutdown_functionがうまく利きません。
具体的には
<?php
function hoge($param) {
sleep(3);
echo $param;
}
register_shutdown_function(hoge, 'TEST!!');
?>
を実行しても3秒後に'TEST!!'が表示されてしまいます。
特にregister_shutdown_functionの記述に不備はないと思うのですが、
この現象について解説していただけばと思います。
0065nobodyさん
2006/09/18(月) 21:28:55ID:???0066nobodyさん
2006/09/18(月) 21:29:36ID:???ブラウザで動かしたらそれエラーになるだろ?
0067nobodyさん
2006/09/18(月) 21:30:20ID:???プログラムを実行したら、メイン処理終了後に3秒経ってechoが実行されたんだろ?
記述通りに動いてるようにしか見えないが何が問題なんだ?
そもそもそれはどのように動くべきだと考えてるんだ。
マニュアル記載ではsutdown_functionではechoは使えないことになってるが
それはブラウザとの通信が途切れるSAPI版の話であってCLIでは関係ないしな。
0068nobodyさん
2006/09/18(月) 21:44:59ID:S7kQJtixテスト用としてCLIの例を挙げましたが実際はSAPIでの結果です。
私の勘違いかもしれないですけどregister_shutdown_functionは
レスポンス後に実行される関数と思っているのですが、
それは間違いでしょうか?
ちなみにSAPIの場合でもechoは</HTML>の後に表示されましたが
マニュアルの注意書き(printまたはechoのような文を使用してデバッグを行うことはできません。 )は
「できるけどやってはいけない」ということでしょうか?
0069nobodyさん
2006/09/18(月) 21:45:49ID:S7kQJtix0071nobodyさん
2006/09/18(月) 21:52:48ID:???ttp://php.plus-server.net/function.register-shutdown-function.html
> PHP 4.0.6 以前のバージョンを Apache で動かしている場合、 登録されたシャットダウン関数は
> リクエストの完了後(結果の 出力を含む)に実行されます。そのため、echo() や print() を用いて
> ブラウザに出力したり ob_get_contents() を用いて出力バッファの内容を 取得したりすることが
> できませんでした。
> PHP 4.1 以降、シャットダウン関数はリクエストの一部として実行される ようになり、そこから結果を
> 出力できるようになりました。
0072nobodyさん
2006/09/18(月) 21:54:36ID:???でも、apacheで動かした場合は何故か「START!」もTEST!!と同時に3秒後に表示されちゃった
<?php
echo "START !";
register_shutdown_function(hoge, 'TEST!!');
function hoge($param) {
sleep(3);
echo $param;
}
?>
0073nobodyさん
2006/09/18(月) 21:55:57ID:???START!の出力が3秒後に出たのは出力のバッファリングのため。
フラッシュをかけない限り、出力はある程度溜まらないとブラウザに送信されない。
0075nobodyさん
2006/09/18(月) 22:12:19ID:???0076nobodyさん
2006/09/18(月) 22:21:45ID:???スレッドを実行したいみたいだが
FAだとしても現実問題の正解はなんだ?
phpのバグ?
Apacheのバグ?
環境の不備?
0078nobodyさん
2006/09/18(月) 22:35:36ID:???> phpのバグ?
> Apacheのバグ?
> 環境の不備?
仕様の不理解、じゃないの?どっからバグなんて話が出てるのよ。
リクエスト/レスポンスに影響を与えずバックグラウンドで動作する処理を書きたい場合は
普通はsystem()辺りで標準出力/エラー出力をcloseしたプログラムを&付きで実行させる、
とかの手段を使うと思う。
0079nobodyさん
2006/09/18(月) 22:58:33ID:???>仕様の不理解、じゃないの?どっからバグなんて話が出てるのよ。
可能性の話だよ。プログラムにはバグは憑き物だから
当然理解不足だって可能性はある。
>register_shutdown_functionはレスポンス後に実行される関数と思っているのですが、
おれもそのように理解していている。
俺の理解も間違ってなかったとしたら
sleepした時間待たされてechoした文字が
レスポンスされるのはおかしいと思わないか?
0081nobodyさん
2006/09/18(月) 23:09:48ID:???たしかに>>71が紹介した
ttp://php.plus-server.net/function.register-shutdown-function.html
echoに関してはにはそのように書いているが、同時にこのようにも書いている。
>シャットダウン関数はすべての出力バッファを閉じてからコールされます。
矛盾しているようにも思えるが、この仕様はどのように理解すればいいの?
0082nobodyさん
2006/09/18(月) 23:11:42ID:???コーヒーでも飲んで落ち着いてからマニュアル嫁
閉じるのは「出力バッファ」だ、どこが矛盾してるのか俺に教えてくれ
0083nobodyさん
2006/09/18(月) 23:15:12ID:???PHPの出力バッファ機能とブラウザへの出力コネクションは全然別の話。
出力バッファが閉じることで出力ハンドラを通した加工出力処理は一切使えなくなるが
出力そのものができなくなるわけでは無いのだよ。
0084nobodyさん
2006/09/18(月) 23:31:16ID:???今、酎杯呑んでるからコーヒーとのちゃんぽんは合わんな。
>>83
なるほどよくわかりました。
>>82もコーヒーでも飲んで落ち着いてから
このように教えてくれればいいのに。
0085nobodyさん
2006/09/19(火) 00:13:12ID:???0087nobodyさん
2006/09/19(火) 01:43:35ID:???0088nobodyさん
2006/09/19(火) 01:49:40ID:sfulj2+A>>78
具体的にはブラウザにレスポンスした後に
外部サーバ上のDBの更新したいとの思いからですが、
その更新は返って来るまで平均10秒くらい掛かって、
しかも外部の範疇の処理のため、チューニングなど手を加えることができず
そのためにはregister_shutdown_functionを使うことで対応できるかと
思って実験的にsleepで試したのですが・・・
そのような場合もsystem()など使うのが妥当なのでしょうか?
シェルを経由すると環境や共通関数など単純に流用できないですね。
ちょっと実機の環境で再度register_shutdown_functionを確認してみます。
0089nobodyさん
2006/09/19(火) 02:00:47ID:???プログラム終了時に必ず実行する処理を書くためのもので、
並列実行のスレッド処理を書くためのものじゃないだろう…
そもそも最大リクエスト数の制約を受けるApacheプロセスを
10秒も起動しっぱなしにさせてたら困ることが多すぎないか?
10秒もかかるDB更新をリクエスト毎に処理なんて無謀だから
俺だったら処理データをファイルなりローカルDBデータなりにセットしといて
cronで数分〜1時間おきくらいに動かしたバッチに処理させるな。
0090nobodyさん
2006/09/19(火) 02:09:41ID:???クライアントがわでタイムアウト扱いされるとやっぱ問題あり?
タイムアウトとして処理されていいのなら
http://jp.php.net/manual/ja/function.ignore-user-abort.php
こっちのほうが適切だとおもう。
タイムアウト扱いが嫌なら、systemとか使うしかないだろうな。
0092nobodyさん
2006/09/19(火) 04:47:25ID:???これについてやり方や実例が詳しく解説してあるページとかないですか?
0093nobodyさん
2006/09/19(火) 05:24:15ID:???unixシェルに関するページなら大抵あるのでは?
まぁ、あれだ
PHPマニュアルのUser Contributed Notesを読まないのは凄くもったいないと思うんだ。
http://jp.php.net/manual/ja/function.system.php
0094nobodyさん
2006/09/19(火) 06:35:21ID:DMPs8Yp+2.echoでhtmlファイルの内容を出力
どちらのほうが負荷が小さいでしょうか?
0095nobodyさん
2006/09/19(火) 06:44:29ID:???微々たるものだからメンテナンス性の方が重要よ?
0096nobodyさん
2006/09/19(火) 07:38:27ID:???0098nobodyさん
2006/09/19(火) 09:50:13ID:9qvktJUTregister_shutdown_functionを実機環境で試した結果。
やっと理解できました。
ブラウザには即時にレスポンスを返しますが、register_shutdown_function
で登録した関数がが完了するまでクライアントは次の操作を行えないようですね。
ということはregister_shutdown_functionでは要件を満たせないということで
この方法は却下します。
色々なご意見を参考に別な方法を検討したいと思います。
0099nobodyさん
2006/09/19(火) 09:52:01ID:RXMAlMKxと、三段階にページをわけてます。
入力した情報を加工してから書込みを行いたいのですが、
基本画面で危険なコードを入力されたら確認画面で実行されされてしまうし、
確認画面で情報を加工しても、情報を改ざんされて書き込み処理画面で情報に
不正なコードが潜んでるかもしれません。
確認画面と書き込み処理画面の両方で加工したほうがよろしいのでしょうか?
0100nobodyさん
2006/09/19(火) 10:18:04ID:???基本画面で<form>に入力。
↓
[サーバ側]
入力されたデータの正当性チェックと、必要ならデータ加工。
データをセッションに保存。
↓
[ブラウザ側]
確認画面に内容表示。
確認ボタン(?)か何かクリック。
↓
[サーバ側]
セッションのデータを復元し、DBなどに書き込み。
↓
[ブラウザ側]
書き込み完了しました。とか表示。
0102nobodyさん
2006/09/19(火) 11:48:43ID:???ttp://ns1.php.gr.jp/pipermail/php-users/2004-May/022383.html
をためしてみましたがうまくいかず
Transfer-Encoding: chunkedとなってしまいます。
Content-Length と Transfer-Encoding: chunked が両方送信されて
Transfer-Encoding: chunkedが優先されているように感じます。
どうすればいいでしょうか。
phpinfo
PHP Version 4.3.2
output_buffering no value
output_handler no value
mbstring.http_input pass
mbstring.http_output pass
0103nobodyさん
2006/09/19(火) 11:56:55ID:???この書き込みだけだと、誤解を生みそうなので勝手に補足。
バイナリセーフがどうのこうのより、何が問題か?
↓のサイトに詳しくまとめられている。
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#NullByteAttack_about
いちいちバイナリセーフかどうか調べるのも鬱陶しいので、問題がないなら
最初から原因となるものを取り除くようにしておけばいいと思う。
0104nobodyさん
2006/09/19(火) 12:11:32ID:???サーバやOSの情報も書いたほうがいいよ。
まともな挙動としては、Transfer-Encoding: chunkedが設定されている場合でも、
header('Content-Length: '.$length);
を加えれば、サーバはTransfer-Encodingの行を消すべきだから。
0105nobodyさん
2006/09/19(火) 12:12:28ID:9qvktJUT結局皆さんの意見を総合して
flush();
ignore_user_abort();
register_shutdown_function();
<body onload='javascript:window.stop()'>
でやることにしました。
ありがとうございました。
0106nobodyさん
2006/09/19(火) 13:27:36ID:???そのページを見ると、要するに
str_replace( "\0", "", $arr );
でNULLバイトを削除せよ、ということだと思うんだけど、
\0だけでなく\x00も考慮しなくていいのかなぁ??
0107102
2006/09/19(火) 13:29:24ID:???OS
Linux aaa-bb-ccc 2.4.21-40.ELsmp #1 SMP Thu Feb 2 22:22:39 EST 2006 i686 i686 i386 GNU/Linux
サーバ
Server version: Apache/2.0.46
Server built: Dec 15 2005 04:19:10
Architecture: 32-bit
rpmからインストールしました。
Content-Typeをapplication/octet-streamにするとContent-Lengthが出力されました。
Content-Length: 190
Content-Type: application/octet-stream
text/htmlだとTransfer-Encoding: chunkedになってしまいます。
Content-Type: text/html
Transfer-Encoding: chunked
perlでもためしてみましたが同じ結果となりました。
別サーバのdebian+apache2でもためしてみましたが同じ結果になりました。
Content-Type: text/htmlでContent-Lengthを出力したいです。
どうすればいいでしょうか。
0108nobodyさん
2006/09/19(火) 13:29:50ID:9qvktJUTwindow.stop()はIEではできないので
隠しfreamで対応したいと思います。
0109nobodyさん
2006/09/19(火) 13:59:00ID:???意見を総合したら、cronかsystemでやれって事では・・?
まぁ・・自分が関わるわけじゃないから、どうやってても別に構わんけど
0110nobodyさん
2006/09/19(火) 14:08:43ID:f+iMimQfと、いう箇所でNotice: Undefined index: name in 〜ソースのアドレス
というふうに怒られてしまいます。
<?phpのすぐ下に書いてあります。それより上にphpのコードは何もありません。
どのように書くのが望ましいのでしょうか?
ご教授お願いいたします。
0111102
2006/09/19(火) 14:20:16ID:???firefoxのLive HTTP headersで確認していて今度は
ie + ieHTTPHeaders
wget -d
で調べたらちゃんとContent-Length値が出力されていました。
firefoxで
Pragma: no-cache
Cache-Control: no-cache
というのがリクエストに含まれていたのが悪かったのかなと思います。
Modify HeadersのFilterで消せなくてあきらめましたが。
どうもすみませんでした。
0114nobodyさん
2006/09/19(火) 15:11:30ID:???新しい配列にそのまま格納する、
関数はありませんか?
0115nobodyさん
2006/09/19(火) 15:14:55ID:???どう格納したいのか具体的な希望が無いのでアレなんだが
単に
$new = $old;
でいいんじゃないの?
これで「違う」って言うなら質問の仕方が悪すぎる気がする。
0116nobodyさん
2006/09/19(火) 15:15:43ID:???0117nobodyさん
2006/09/19(火) 15:17:36ID:j2rsOfI9どうやって参照するんでしょうか?
最初にカウント取らないと無理?
0118nobodyさん
2006/09/19(火) 15:27:51ID:???配列の添え字は1とか2とかから始まる場合もあるし
添え字にマイナスも使えるから0が先頭とは限らないよ。
$last = end($arr);
で最後の値は取得できる。
■ このスレッドは過去ログ倉庫に格納されています