トップページphp
1001コメント298KB

【PHP】下らねぇ質問はID出して書き込みやがれ 83

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/06(月) 04:14:58ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0521nobodyさん2009/04/17(金) 14:28:33ID:???
>>519
それ昔の仕様
今でもiniで設定できたはずだけどやめたほうがいい

$_POST、$_GET、$_SESSIONで取得するのが一般的
05225192009/04/17(金) 15:07:59ID:???
>>520, 521
サンキュー。
そういうことか。
0523nobodyさん2009/04/17(金) 15:09:52ID:???
昔の仕様すごいよなあ。querystringから内部の変数書き換えまくり
0524nobodyさん2009/04/17(金) 17:12:12ID:uEgfagTh
PHPとMySQLを使うシステムで、公開用サイトの全ページに

1:MySQL上のconfigテーブルを読み込む
2:configに設定してある内容によって処理を分岐
3:ログを書き込む

という処理が発生します。
1アクセスで何回かのSQLを実行することになるのですが、
サイトのアクセスが増えると、処理の負荷などで後々問題になるでしょうか?
現時点では問題ないのですが、先の事を考える時になります。
0525nobodyさん2009/04/17(金) 17:15:52ID:???
>>524
いちどキャッシュとして書き出しておけばいいんじゃない?
0526nobodyさん2009/04/17(金) 17:25:30ID:???
>>524
configテーブルが満たす仕様による。
高度な検索性を必要とするconfigテーブルでないのなら、そんな設計はやめた方がいい。
0527nobodyさん2009/04/17(金) 19:34:25ID:hTOqIwMv
HPでヘッダやフッター、ナビボタン、背景、レイアウトは同じで 
例えば写真だけ違うの見せたい場合ってPHPが役立つのですか?
0528nobodyさん2009/04/17(金) 19:35:39ID:???
HTMLコピペして画像のファイル名だけ編集してUPすればよくね
0529nobodyさん2009/04/17(金) 19:36:03ID:???
すきなの選べ

・DWのテンプレ機能
・PHP
・Java
・Perl
・Ruby
・JavaScript
0530nobodyさん2009/04/17(金) 19:59:08ID:???
おいおい、SSIが入ってないぞ
0531nobodyさん2009/04/17(金) 21:19:55ID:???
3.0になったPythonもお忘れなく☆
0532nobodyさん2009/04/17(金) 21:23:35ID:???
ちょっとちょっとFlashが入ってないよ
05335242009/04/17(金) 21:58:50ID:uEgfagTh
>>525
それも考えたのですが、ファイルに書き出すなら
データベースの利便性が失われる気がして悩んでます。。
セキュリティとかも気になるし。

>>526
高度な検索は必要ありません。テーブルからconfigファイルを読み込み
配列に入れて、各条件(ログインなど)の時に参照すると言った仕様です。
0534nobodyさん2009/04/17(金) 22:04:21ID:3OZ9UJNj
if (!$fp = fopen('...', "r")) { ... }の
(!($fpではなくて
!$fpみたいなコーディングスタイル使ってる?
0535nobodyさん2009/04/17(金) 22:05:41ID:???
うん
0536nobodyさん2009/04/17(金) 22:08:53ID:???
>533
iniとかXMLとかJSONとか、なんでもいいから好きなファイルフォーマットで書き出しておけ。
もしくは単純にPHPコードに配列として書き込む(当然設定だけ別ファイルに隔離)のもアリ。
(本当はあまりよくないのだが、APCなどのキャッシュが効くようになるという大きなメリットがある)

とりあえず、「データベースの利便性」ってなんだ?
上記のような手段ではなく、わざわざ遅く難しいDBに情報を格納している理由は?
0537nobodyさん2009/04/17(金) 22:16:19ID:???
>>533
データベースの接続に必要な情報はファイルの方に書き込まないといけないじゃん
その情報を知ってしまえば、わざわざデータベースに突っ込んでも無意味じゃん

それに設定項目が分散しちゃうと、後でめんどくさくなるだけじゃん
0538nobodyさん2009/04/18(土) 01:11:57ID:???
>>533
そもそも>>524のキャッシュとして書き出しって意味がわからんな。
一度取ってきたらメモリにキャッシュすればいい。
クラス変数にいれるか、インスタンス変数にいれてsingletonにする。
0539nobodyさん2009/04/18(土) 01:39:24ID:???
クッキーって期限がありますよね
ということは、切れたとき使えないときの為のコードも要りますよね?
クライアントが便利になるよという機能であって何かの代わりになるものではないですよね?
例えば、購入履歴とかはログを残しといてアカウントで参照できるようじゃないと
クッキーが有効であっても期限がありますから
ちがうん?

0540nobodyさん2009/04/18(土) 01:58:11ID:???
あってる。
クッキーは記録を残すための物じゃない。
ログイン状態の保持(セッションキーの保持)専用だと考えていいよ。PHPでは他の用途にはあんまり使わない。

消えたら困るものはクッキーに保存してはいけない。
何かを保存するとしても、掲示板の名前欄みたいな、消えてもいいものだけにしとけ。
0541nobodyさん2009/04/18(土) 02:14:41ID:???
すっきりしますた。ありがたや。
0542nobodyさん2009/04/18(土) 02:14:48ID:dAOHt7Vp
厳密にはphp関連の質問にはならないかもしれないんですが

index.php?i=1や
index.php?i=2といった変数付記でのページURLを、

home.html
news.html
というURLでも呼び出すことができるようにするhtaccess(か何か)の
記述方法があったはずなのですが思い出せません。

home.htmlやnews.htmlはファイルが実際存在するのではなくて、
URLっぽくする(というか、覚えてもらいやすくする)ための便宜ファイル名です。

例えば、ユーザー側――ブラウザ上のURLは「http://www.hoge.com/news.html」となりますが、
実際に呼び出しているファイルはサーバー側ではindex.php?page=1である、といった感じです。

断片的な情報しかなく稚拙な説明で申し訳ございませんが、どうかご教授下さい。
0543nobodyさん2009/04/18(土) 02:17:52ID:???
http://pc11.2ch.net/test/read.cgi/php/1023791370/l50
0544nobodyさん2009/04/18(土) 04:57:19ID:???
>>542
mod_rewrite
05455242009/04/18(土) 11:10:50ID:RfYbPRbr
返信が遅れてすみません。

>>536
DBを使ってない場合は、dat形式にしてファイルに書き出していました。
昔の、CGIの掲示板などを作る時のやり方です。

>とりあえず、「データベースの利便性」ってなんだ?
セットアップの仕組みを作っているのですが、DBで管理する方が
編集しやすいのです。ファイル編集でも出来ますが、手間がかかるし。
それに、有名なオープンソースシステムをみても、だいたいconfigは
DB上で管理しているので、同じようにしたいと思っています。

>>537
データベースに接続する情報はもちろんファイルに書きます。config.phpなどに。
そうじゃなくて、サイト毎の設定ってありますよね?(例えばdate形式とか)
そういう諸々の設定を管理するのにDBを使っています。

>>538
Smartyのキャッシュファイルのイメージで回答しました。
メモリキャッシュしても、ページ推移してたらもう一度読み込む必要がありますよね?
セッションやクッキーを使っても良いのですが、サイト自体の設定を
第三者のファイルにキャッシュするのは問題あると思います。
(認識が違っていたらすみません。もっと勉強します
0546nobodyさん2009/04/18(土) 11:22:48ID:???
どの程度効果が出てるかまでは測ってないんでアレだけど、自分はDBの内容から、
実行時に扱いやすいデータに変換したXMLを出力して、こっちを読み込ませてる。
一次データの管理はDBの方が安全だしね。

serializeの方がいいかなぁとも思ったが、なんかあった時にデバッグしにくそうなんで止めた。
後からでも変更できる話だし。

0547nobodyさん2009/04/18(土) 11:49:03ID:oOFMY9IY
cakephpを使おうと思ってcakephpのチュートアルに沿ってブックマークアプリを作ってたのですが
何故こういう書き方にするのか、何故こう書いたらこういう風に出力されるのか、といったことがまったく理解できません
フレームワークを始める前にOOPの勉強をした方がよろしいでしょうか?
また、学習の順番としてはクラスの書き方を覚えてからOOPに移行したらいいでしょうか?
0548nobodyさん2009/04/18(土) 11:49:56ID:???
まず公式マニュアルの言語リファレンスを読んだ方がいいよ
0549nobodyさん2009/04/18(土) 13:08:50ID:???
fsockOpenを使ったメール受信で、複数の添付ファイルがある場合複数ファイルを保存するにはどうすればいいのでしょう。
0550nobodyさん2009/04/18(土) 13:10:05ID:xPyKg5dr
さげちゃった。
0551nobodyさん2009/04/18(土) 13:31:21ID:B6cKaOUW
クラスとか全然理解できない
ユーザ定義関数じゃだめなん??
どういったときにクラスで書くとか
感覚が掴めない
こういうときに必要なんだぜって
やさしく教えてつかあさい;;
0552nobodyさん2009/04/18(土) 13:39:18ID:???
クラスなんて使わない。
関数も自分でつくらない。必要があれば使えばいいし使わないでもいいなら使わないでもいい。
無理に使う意味なんてないでしょ。

0553nobodyさん2009/04/18(土) 13:50:08ID:???
クラスってのはオブジェクト指向設計を実装するために使うものだぞ?
0554nobodyさん2009/04/18(土) 13:59:47ID:moRQGLP/
関数内でincludeされたクラスや関数のスコープはグローバルとなる、というルールはPHP6以降でも変更されることはないの?
0555nobodyさん2009/04/18(土) 14:06:59ID:B6cKaOUW
>>552
そう割り切っちゃえば話は簡単なんだが、理解が出来ないってのがつらい;;

>>553
だから、そいつをやさしく教えてくれ;;
そのオブジェクト指向ってのがよくわからんのだ><
0556nobodyさん2009/04/18(土) 14:12:11ID:???
>>552
たぶんこいつはスパゲッティコード
0557nobodyさん2009/04/18(土) 14:14:54ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ
0558nobodyさん2009/04/18(土) 14:40:42ID:???
557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ

557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ

557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ

557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ

557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:???
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ
0559nobodyさん2009/04/18(土) 15:54:05ID:???
>551
・自分の書いたコードを晒して、ヒマな人に添削してもらう
・腕のいい奴の書いたコードを読む
前者のほうが力になりやすいかね。
屑コードを、クラスを使った近代的なコードに書き直していく過程を見るのが一番わかり易い。
そこらで公開されているPHPのコードはゴミと芸術品の両極端が多いから、初級→中級の勉強には微妙。

そこのステップは知識云々じゃなく、考え方の転換を迫られるから、引っかかる奴が多いのは事実。
>557みたいに諦めちゃう人も多いけど、身に着ければ強力で便利なツール。
0560nobodyさん2009/04/18(土) 15:59:44ID:???
>>549
受信に使っているプロトコルの仕様にならって実装する



OOPについて勉強したい的な話題はこちらでどうぞ
http://pc11.2ch.net/test/read.cgi/php/1172205352/
0561nobodyさん2009/04/18(土) 16:01:28ID:???
>>551
まぁ、なんかWebアプリとかを作成していく中で、
誰かが作成したライブラリだとかPEARだとかを使うことになったとして
そのライブラリがただのユーザ定義関数だけで書かれていて、設定用に
大量のグローバル変数を有していたら、困ったことにならない?

それだけでも、機能の集合がクラスになっているということに意味はあると思うけど。
0562nobodyさん2009/04/18(土) 17:09:46ID:???
>>555
どの辺まで理解できて無いかによってはスレ全部埋めることになるが・・・ム板行ったら?

とりあえず全部自分ひとりで趣味レベルのモノ組むのであればオブジェクト指向にこだわる理由は無い。
どーしても理解したいって言うなら、近道は無いとだけ言っておく。
0563nobodyさん2009/04/18(土) 17:49:55ID:zbLkqu9f
mysqlからデータを引っ張りだし表示させたいのですが
20090418162123をいう文字列を(int)を用いてキャストした場合に
なぜか同じ数字ではなく2147483647という数字に変換されてしまいます。
これはどういった問題が考えられるでしょうか?
すいませんがアドバイスよろしくお願いします。
0564nobodyさん2009/04/18(土) 18:04:18ID:moRQGLP/
10桁こえとる
0565nobodyさん2009/04/18(土) 18:09:53ID:???
DATETIMEのままでいいだろ
0566nobodyさん2009/04/18(土) 18:10:35ID:???
(long)
0567nobodyさん2009/04/18(土) 18:13:15ID:moRQGLP/
しかしPHP5からクラスに変数(メンバ)保存できるようになったのでもっぱらstaticで使いまくって
インスタンス全然つかわんようになったよ。せいぜいmysqliのインスタンス作るぐらい。
staticの方が3倍速いからね
みんなはどうなの?
0568nobodyさん2009/04/18(土) 18:19:54ID:???
そんなに速さ追求するならなぜPHP使ってるの? ってつっこまれるぞ
0569nobodyさん2009/04/18(土) 18:26:13ID:???
staticしか使わないなら関数と大して変わらないじゃん
0570nobodyさん2009/04/18(土) 18:31:48ID:???
>>547
cakeはOOP必須ですよ
0571nobodyさん2009/04/18(土) 18:33:22ID:???
>>570
漢は手続き。

ちょっと言ってみたかっただけだけど。
0572nobodyさん2009/04/18(土) 18:33:40ID:???
OOPはわかってもMVCの概念を理解するのはむずかしい
それを分離して補ってくれるのがフレームワーク
OOPOOP言うのは面倒だからまとめてJavaのサイトで勉強してきなさい
0573nobodyさん2009/04/18(土) 18:34:42ID:???
PHPを書くのに使うIDEってーと、何がお勧めですか?
コードス補完があると便利なんですが
0574nobodyさん2009/04/18(土) 18:55:58ID:moRQGLP/
>>568
普及率が高いから。jspやaspは搭載してないレンタルホストがほとんどだしね。

>>569
カプセル化だけほしいんだよね。変数の扱いが楽だから。漢は手続きと言ってみたいけど、へっぽこなので変数汚染しまくり。
0575nobodyさん2009/04/18(土) 18:57:28ID:???
>>573
>>1
0576nobodyさん2009/04/18(土) 19:03:47ID:???
>>573
初心者のうちはPHPエディタ。
中級以上はPDT
0577nobodyさん2009/04/18(土) 19:36:21ID:???
フレームワークの提供するMVC構造は型志向プログラミングの考え方からはそれなりに遠い地点にあるプログラミング構造だぞ。
例えばCakeやRailsなどのフレームワークはTableModuleパターンを押し付けてくるが、ストラウストラップのOOPの考え方に一番近いのはドメイン駆動型の設計。
で、フレームワーク上でドメイン駆動設計を実現しようとすると、クラス階層を1枚上に丸ごと被せざるを得ない、というくらい両者は相性が悪い。
(基盤となるM-V-C間の繋ぎこみ自体はポリモーフィックに行なわれている事が多いので、無関係でもないが)

まあ、その「押し付け」のおかげでscaffoldingなどの高い開発効率を確保できるわけで、悪いとは言わないけどな。
少なくとも、MVC構造を理解する事と、OOPの考え方を理解する事は、別の問題と考えるべき。
実際、GoFをひとつも理解してなくともRailsやCakeで生産性は出るし、OOPを突きつめると必然的にRailsやCakeの設計に行き着く、というわけでもない。
0578nobodyさん2009/04/18(土) 20:16:51ID:???
>>573
E-TextEditor  ttp://www.e-texteditor.com/
EmEditor v9  ttp://jp.emeditor.com/
TextMate  ttp://macromates.com/
Redcar  ttp://redcareditor.com/
jEdit  ttp://www.jedit.org/
05795632009/04/18(土) 23:12:47ID:???
>>564
>>565
>>566
返事が遅くなりすいません。
単純にint型の最大値を超えてた訳ですね。
本当にありがとうございました!
0580nobodyさん2009/04/19(日) 00:13:57ID:KO8gMtKF
【OS名】Win32
【PHPのバージョン】5.2.9-2
【質問内容】
配列の任意の要素を削除する方法はありますか?
先頭や末尾の削除は簡単にできますが、任意の要素の削除ができません。

一応削除したい要素より後ろの要素を一つずつ前に詰めていく方法もありますが、一発でできるような方法があれば教えてください。
0581nobodyさん2009/04/19(日) 00:32:27ID:???
>>580
http://jp.php.net/manual/ja/function.unset.php

配列の添字も詰めたい場合は、これに
http://jp.php.net/manual/ja/function.array-values.php
0582nobodyさん2009/04/19(日) 01:12:04ID:KO8gMtKF
>>581
解決しました
ありがとうございます
0583nobodyさん2009/04/19(日) 11:36:28ID:???
>>577
日本語わかる?
0584nobodyさん2009/04/19(日) 12:09:11ID:???
プログラムは、「データ」と、データを扱う「処理」の2つの構成要素から成る。(チューリングマシン)
オブジェクトは、データに処理がくっついたもの。
言ってしまえばそれだけのことでしかない。
OOPを難しく考える必要はないよ。
0585nobodyさん2009/04/19(日) 12:21:06ID:???
OOPを勉強するためにJavaを勉強するのも良いけど、
ラムダ計算、関数型プログラミングに慣れておくために、LISPも勉強しておくと良いと思います。
0586nobodyさん2009/04/19(日) 12:47:14ID:???
>>584
オブジェクト指向設計が重要なんだろ
単なるギミックじゃないぞ
0587nobodyさん2009/04/19(日) 13:10:40ID:???
>>584 の言い方はどうかと思うが、OOPで出来ることを、単なるギミックとして使うのもアリだとは思う。
いわゆる Stateパターンとか OOD的にはかなりビミョーと言う認識。
0588nobodyさん2009/04/19(日) 13:15:49ID:TOquu1lD
会員(ログイン)ページの中の申し込みフォームを
入力画面→確認→投稿という形で作ってまして
作成手順は入力画面でポストされたものをセッションに代入、
値を保持しながら確認→投稿という形で作成しました。
申し込みフォーム自体は問題がないのですが、
例えば、入力画面から確認に行き、そこから投稿せず会社概要など
他のページに移動して再度入力画面にいくと以前入力された値が
表示されてしまいます。おそらくセッションが残ったままに
なってるのが原因だとは思います。
入力画面←→確認←→投稿は値を保持させ他のページに飛んだ場合は
値を消去するやり方を教えていただけませんか?
アドバイスよろしくお願いします。
0589nobodyさん2009/04/19(日) 13:33:28ID:???
>>588
unset($_SESSION['hoge'])すればいいんじゃ?
05905882009/04/19(日) 13:44:00ID:???
>>589
返信ありがとうございます!
入力画面、確認画面、投稿画面以外の全てのページに
unset($_SESSION['hoge'])を設定しとこうかなとも考えましたが、
もしかしたら違うスマートやり方もあるのかなと思い質問してみました。
0591nobodyさん2009/04/19(日) 13:46:19ID:???
hiddenでいいやん。
0592nobodyさん2009/04/19(日) 14:16:20ID:???
>>577

そうだよな。CakePHPの例で言っても、所謂OOP的な書き方って、Model, Controllerのextendsくらいだもんな。
基本、コンストラクタは省略されてるし、セッター、ゲッターなしにいきなりプロパティ変数に設定値を代入でOKとか。

あと、命名規則とか記述に縛りが多いのも独特。
05935882009/04/19(日) 15:05:06ID:???
>>591
返信ありがとうございます。
hiddenも検討したんですが今回は項目が多く
入力←確認、確認→投稿時に全ての値をセットしないと
いけなくなりますので出来ればセッションでいけたらと思います。
変な質問すいません・・
0594nobodyさん2009/04/19(日) 15:08:27ID:???
そのページにどこから来たかでわければ?
0595nobodyさん2009/04/19(日) 15:18:01ID:???
初々しいな
0596nobodyさん2009/04/19(日) 16:04:10ID:???
1. 入力フィールドが多数ある時は、そいつらを扱うクラスや関数を作っておくと楽。
複数の画面から同じフォームを生成する場合などは、使い回しが効くと非常にラクになる。

2. hiddenは別に面倒じゃない。確認画面は
foreach($_POST as $k => $v) echo "<input type=\"hidden\" name=\"$k\" value=\"$v\">";
でじゅうぶんだろ?(XSSを考え、実際はエスケープする事)。
0597nobodyさん2009/04/19(日) 17:04:22ID:???
>>547
まずCAKE使うだけならOOPの勉強しなくても、まぁ使える。
さらにCAKE使ってるとOOPに触れざる得ないから多少慣れるのもいい事かも。

で、クラスの書き方と使い方ぐらい入門系の情報でやっておくとある程度身に付いてくるよ。
0598nobodyさん2009/04/19(日) 18:56:04ID:???
>>593
まぁ好きにすれば良いんだけど、自分だったらそのセッションの内容をXMLに変換して、
これをhidden に持たせて、サーバ側ではsimplexml_load_stringでパースする。
0599nobodyさん2009/04/19(日) 19:09:23ID:???
どのみちCSRF防ぐためにワンタイムトークンとかHMAC仕込むときhidden使うしね
あんま意味ないけどhiddenはbase64_encode(serialize())とかすれば一個ですむよ

とこでいくつかのWebアプリでは、プレビューには投稿画面に入力データのリストを追加しただけのものを表示するね
確認画面というフェーズを新たに作るより省力化になっていいと思う。確認画面から投稿画面にもどって、、、という作業もいらないし
0600nobodyさん2009/04/19(日) 22:41:24ID:???
> あんま意味ないけどhiddenはbase64_encode(serialize())とかすれば一個ですむよ
ここだけケチをつけて済まないが
クライアントに渡すデータは他のフォーマットにしとけ
unserialize()時にコードインジェクションが起きる
06015992009/04/19(日) 23:09:38ID:???
>>600
こりゃ失敬w
改ざん検知してないと__wakeup()されたりしちゃうね
0602nobodyさん2009/04/19(日) 23:14:21ID:cHMoaxlc
C++でPHPってかけますか?
0603nobodyさん2009/04/19(日) 23:14:45ID:???
はぁ?
0604nobodyさん2009/04/19(日) 23:17:02ID:???
一部C++で書かれてるし、エクステも一応書けるはず。
0605nobodyさん2009/04/19(日) 23:24:48ID:???
エクステンションとして利用するならCでもC++でも.netでもdelなんちゃらでもいける
0606nobodyさん2009/04/20(月) 15:46:47ID:yRu17DN3
$ary[1]= "blue";
$ary[2]= "red";
$ary[3]= "yellow";
$ary[4]= "white";

上記のような配列があって、
一番大きい数字のキー(上記なら4)を取得したいのですが、
$aryをforeachで繰り返してキーを取得するより何かスマートな方法はありませんか?
0607nobodyさん2009/04/20(月) 15:54:14ID:???
count($ary)
0608nobodyさん2009/04/20(月) 15:54:32ID:???
>>606
その数値の定義のルールは?
1番目から1、2・・・5ってつけるなら
count($ary)でいけるんじゃね?
キーに文字列とか、飛ばし飛ばしの数値とかだったらループさせないといけないはず

キーソートあったと思うけど、個人的には何か使いたくないな
というか、使う機会がないな
0609nobodyさん2009/04/20(月) 15:56:10ID:???
arsort($ary,SORT_NUMERIC);
foreach($ary as $value){
$abc[] = $value;
}
$abc[0];

こうするのがいやってことね。
0610nobodyさん2009/04/20(月) 16:03:13ID:???
>>606
つ $ary[max(array_keys($ary))];
0611nobodyさん2009/04/20(月) 16:04:04ID:yRu17DN3
>>607
>>608
ほんとだ、こんな方法が・・・。
自分の頭の固さを痛感しました。

>>609
ですね。でもシンプルなのが書けそうです。

ありがとうございました!
0612nobodyさん2009/04/20(月) 16:15:13ID:yRu17DN3
>>610
結果は同じでも、命令としてはこっちのが命令の意図に近いですね。
どっち使うかちょっと考えてみます。
ありがとうございます!
0613nobodyさん2009/04/20(月) 16:20:28ID:???
単に最終要素を得たいなら
http://jp.php.net/manual/ja/function.end.php
で済むけど。
0614nobodyさん2009/04/20(月) 16:54:04ID:yRu17DN3
>>613
そんな便利なものが。
今回は取得したキー値を使い回すコード書いてるので、
endは使えませんが今後参考にさせてもらいます。
ありがとうございます!
0615nobodyさん2009/04/20(月) 18:29:43ID:???
>>614
意味を取り違えてるかも知れんが、キー値も必要ということなら、
http://jp.php.net/manual/ja/function.key.php で取得できる。
0616nobodyさん2009/04/20(月) 19:03:29ID:???
>>615
uzee
0617nobodyさん2009/04/20(月) 19:12:07ID:9zjWZumm
abc
cba
acb

上記の内容のテキストファイルの"cba"の行を削除する場合、どのようなコードを書けばよいのでしょうか?
0618nobodyさん2009/04/20(月) 19:18:18ID:???
$str = str_replace("cba\n", '', $str);
0619nobodyさん2009/04/20(月) 19:32:18ID:???
>>617
ループしてその文字列がcbaなら消せばいいんじゃね?
0620nobodyさん2009/04/20(月) 19:39:36ID:9zjWZumm
>>618,>>619
ありがとうございます。

それと、そもそもファイルの内容を行ごとに配列に格納するのはfreadでも可能でしょうか?
file関数だとロックができないようなんですが…
0621nobodyさん2009/04/20(月) 19:48:57ID:???
http://jp2.php.net/manual/ja/ref.strings.php
$buff = fread($fp, 4096);
$lines = explode("\n", $buff);

とか
■ このスレッドは過去ログ倉庫に格納されています