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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0002nobodyさん2005/08/08(月) 01:21:35ID:???
$がついてない変数ってどういう意味があるんですか?
0003nobodyさん2005/08/08(月) 01:25:02ID:???
>前スレ994
基本構文のところに書いてある。
ただPHPの文法についての記述は全体に弱いね。
リファレンスだからだと思うけど
00049512005/08/08(月) 01:29:12ID:???
>>2

$で始まらない変数ってあるんすか?
http://www.php.net/manual/ja/language.variables.php
0005nobodyさん2005/08/08(月) 01:41:56ID:???
インストールネタで申し訳ないんだけど
libcurl.so.2
ってどこでDLできますか?
またはrpmのパッケージ名を教えて下さい

ついでにもひとつ、rpmfind.netで「libcurl.so.2」でサーチした時に
希望のディストリが表示されなかった場合、例えばRed Hat Enterprise ES2.1用が欲しいのに
RH9とか8とか7とか近そうなものがあった場合、代替えって効くもんなのでしょうか?
0006前スレ994 2005/08/08(月) 02:30:42ID:???
>>3
そんなところに書いてたのか。索引で&調べたらでてこなかった('A`)
ありがとー
他の言語の経験はあるんだけど、どこまで同じで、どこから違うのか
イマイチ感覚がつかめないっす
0007nobodyさん2005/08/08(月) 05:29:57ID:???
>>5
そのディストリのcurlのパッケージにあるでしょ。
devel(はないか)とか別に分けてある可能性はないわけでもないが。
libcurl.so.1とかlibcurl.so.3とかかもね。

>代替えって効くもん
Win3.1のソフトが全部Win95/98/Meで動いたか?
Win95のソフトが全部WinXPで動いたか?
答え:ものによる
0008nobodyさん2005/08/08(月) 09:42:49ID:???
global変数でglobal $abc="abc";
といように宣言と同時に初期化ってできないですか?

また大規模なサイトを作るときはglobal変数は使っては
あまりよろしくないとどこかのサイトで言ってたけどreally?
0009nobodyさん2005/08/08(月) 09:50:38ID:???
PHP5対応のRSS表示スクリプトってフリーでありませんか?
紹介して下さると助かりますです
0010nobodyさん2005/08/08(月) 10:19:48ID:???
http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=PHP5+SimpleXML+RSS&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
001192005/08/08(月) 10:33:27ID:???
>>10
http://phpspot.net/php/pgSimpleXML.html
等は見つけていて試しているのですが真っ白なページしか表示されません。
----------------------------------------
$xml = simplexml_load_file("http://www3.asahi.com/rss/index.rdf");
print_r($xml); // 配列を出力してみる。

foreach ($xml->item as $item) {
  $rss_title = $item->title; // item/title
  $rss_item = $item->link; // item/link
  $rss_desc = $item->description;// item/description
}
print $rss_title;
----------------------------------------
としてみたんですが間違っている箇所を指摘下さると助かります。
0012nobodyさん2005/08/08(月) 10:47:27ID:???
>>11
コードは間違ってないよ。PHP5.0.4で実際に動かしてみたけど大丈夫。
先頭に以下を入れて実行してみて何かエラーメッセージは表示されない?

ini_set('display_errors', true);
ini_set('display_startup_errors', true);
error_reporting(E_ALL);
0013nobodyさん2005/08/08(月) 11:09:29ID:???
>>12
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
error_reporting(E_ALL);

上記コードを加えてみましたが、相変わらず真っ白です。
PHP5ではエラー表示が標準では出ないのでしょうか。
コンパイルオプションの問題かな・・。

ちなみに
http://phpspot.net/php/pg%8AO%95%94%82q%82r%82r%82%F0%93%C7%82%DD%8D%9E%82%DD.html
のコードでは問題なく動きました。
しかし自分でいじるならsimpleXMLのほうがコードが短くなりそうですし、習得したいのですが・・。
0014nobodyさん2005/08/08(月) 11:12:25ID:???
>>2
定数?
0015nobodyさん2005/08/08(月) 12:05:40ID:uL829/sh
検索する入力フォームを作ってるんだけどなぜかうまく動かない・・・。
<FORM method='post' action='{$_SERVER["PHP_SELF"]}?proc=result'>
というフォームを作ってsubmitボタンから飛ぶと期待通りファイル名に?proc=resultがつくのに
<FORM method='get' action='{$_SERVER["PHP_SELF"]}?proc=result'>
とすると?proc=resultがつかない・・・。
postをgetにするだけで渡されるURLが変わってしまうのはなぜでしょう?
0016nobodyさん2005/08/08(月) 12:25:54ID:???
>>15
print や echo を使って出力する時の話だよね?
getの時は、<form 〜action='自分自身のファイル名'> だけが出力されるってこと?
んな筈ないんだけどなぁ。もう一回確認してみ。
0017152005/08/08(月) 12:32:23ID:???
>>16
それが、出力されたソースを見てみると両方とも確かにURL?proc=resultとなってるんですよ。
なんだけど、postの場合はproc=resultを渡された処理が行われているのに
getだと元のフォームがそのまま表示されてしまうんです。
URLを見てみるとproc=resultがなく、入力した変数と値のみがパラメータとしてついている状態です。

なんでだろ?
0018nobodyさん2005/08/08(月) 12:34:55ID:???
受け取りは?
print_rで確認しる
0019nobodyさん2005/08/08(月) 12:35:13ID:nwBW+BrY
>>17
ブラウザに聞けや
0020nobodyさん2005/08/08(月) 12:39:09ID:???
>>15
postで?proc=resultを付けている時点でアイタタなソースなんだが。
以下でやって味噌。

<FORM method='get' action='{$_SERVER["PHP_SELF"]}'>
<INPUT TYPE='hidden' NAME='proc' VALUE='result'>
<INPUT TYPE='submit' VALUE='送信'>
</FORM>
0021162005/08/08(月) 12:51:09ID:???
>>17
これを試してみ。procの分岐条件に問題があると思われ。

<?php
print_r($_GET);
print("<BR>");
print_r($_POST);
echo "<FORM method='post' action='{$_SERVER["PHP_SELF"]}?get_var=get_var'>"
?>
<input type="hidden" name="post_var" value="post_var">
<INPUT TYPE='submit' VALUE='送信'>
</FORM>

URLにひっつけた分は$_GETに入り、hiddenの方は$_POSTに入る。
0022nobodyさん2005/08/08(月) 13:08:08ID:???
$_POST[hoge]で処理してんじゃないの?
$_GET[hoge]もしくは$_REQUEST[hoge]
0023152005/08/08(月) 13:10:03ID:???
みなさんレスどうもです。
もともとGETで作るつもりで?proc=resultを付けていたのですが、
うまくいかないので試しにPOSTでもやってみたということです。
<INPUT type='hidden' name='proc' value='result'>でうまくいくことも確認済みです。
FORMでactionを指定する際にGETだとパラメータをつけられないのかが気になっているだけなので・・・。
入力フォームにprint_r($_GET)を書いたところ、submitを押した後に$_GETの内容が表示されましたorz。
action='ファイル名?proc=result'でもダメって・・・ナンダソリャ。

>>21を試してみたところ$_GETにはget_var、$_POSTにはpost_varがちゃんと入ってます。
で、次に>>21をmethod='get'にして試したところ、$_GETには[post_var] => post_varのみが表示されました。
・・・もしかしてmethod='get'のときはフォーム内で指定した変数・値だけしか渡されない?
actionでURLにつけたパラメータは$_GETには格納されなかったりするのでしょうか?
002492005/08/08(月) 13:11:37ID:???
>>13
最終的には

+++++++++++++++++++++++
<?php
ini_set('display_errors', true);ini_set('display_startup_errors', true);
error_reporting(E_ALL);
$xml = simplexml_load_file("http://www3.asahi.com/rss/index.rdf");
foreach ($xml->item as $item) {
  $rss_title = $item->title; // item/title
  $rss_item = $item->link; // item/link
  $rss_desc = $item->description;// item/description
print $rss_title;
}
?>
++++++++++++++++++++++++
としてみましたが相変わらず真っ白です・・
このスクリプトのあったページに移動して質問してみます
ありがとうございました
0025nobodyさん2005/08/08(月) 13:18:12ID:???
>>23
あなたの日本語良くわからないけど
form だったら hidden で
a href だったら クエリーストリングで
って、ちゃんとやった方がいいんじゃないの?

パラメータ組み立てる関数とか作っとけば、
別に値追加しようが削除しようが手間にならないし。
0026nobodyさん2005/08/08(月) 13:20:17ID:???
なにもトリッキーなコード書いている必要はないと思うが。
0027nobodyさん2005/08/08(月) 15:07:50ID:???
aaa.jpgの場合でもaaa.JPGの場合でも拡張子を除いたaaa部分だけを取り出す方法を教えてください
0028nobodyさん2005/08/08(月) 15:11:11ID:???
substr($filename,0,-4);
0029nobodyさん2005/08/08(月) 15:15:22ID:???
2005年7月20日8時10分30秒と現在の時刻の時間差を計算したいのですが
シンプルな方法ありませんか?
0030nobodyさん2005/08/08(月) 15:17:56ID:???
>>28
$path_parts = pathinfo('aaa.jpg');
$path_parts['basename']の中身はaaa
0031302005/08/08(月) 15:18:41ID:???
>>27
でした
0032nobodyさん2005/08/08(月) 15:20:27ID:???
空気嫁
0033nobodyさん2005/08/08(月) 15:46:32ID:???
>>30
$path_parts = pathinfo('aaa.jpg'); 
$path_parts['basename']の中身はaaa.jpg
0034nobodyさん2005/08/08(月) 15:57:03ID:???
timestampで引き算しる>>29
0035nobodyさん2005/08/08(月) 15:58:22ID:???
hoge.phpの中でインクルードしているhoge2.phpの処理中にexit()が実行されたとき
1.hoge.php内でhoge2.phpをインクルードした後の処理も中断されますか?
2.hoge2.phpの処理が中断されるだけで、hoge.phpの続きの処理は実行されますか?
0036nobodyさん2005/08/08(月) 16:11:01ID:???
>>35
質問内容の 1 と 2 は同じ事を言っているんではないか?

--- hoge1.php ---
<?php
echo 'hoge1 start<br>';
include('hoge2.php');
echo 'やってみたら判るだろ<br>';
?>

--- hoge2.php ---
<?php
echo 'hoge2 start<br>';
echo 'hoge2 exit<br>';
exit;
?>
003792005/08/08(月) 16:15:08ID:???
>>24

//------------------------------------
<?php
$xml = simplexml_load_file("http://www3.asahi.com/rss/index.rdf");
print_r($xml); // 配列を出力してみる。

print "<br><br>";
$rss = $xml->item[0]->title;
print $rss;

?>
//------------------------------------
で個別の値を取り出すことは出来ました。
foreachの使い方が適切じゃないような気がする・・
でも他の人は動いてるみたいだし・・
0038352005/08/08(月) 16:38:15ID:???
インクルードした場合はインクルード先のスクリプトがそのままインクルード元のスクリプトに
挿入されると考えればいいようですね。
どうもありがとうございました。
0039nobodyさん2005/08/08(月) 21:46:26ID:yiUBO5QJ
ユーザー定義関数で、複数の戻り値を指定する事って出来るんでしょうか?
0040nobodyさん2005/08/08(月) 21:47:28ID:???
しっかし、最近の宿題はバリエーション豊富だな…
0041nobodyさん2005/08/08(月) 21:54:40ID:???
>>39
無理。やりたければ、参照渡しされた引数に値を入れるか配列を返すかぐらいかな。

function sub1(&$result1, &$result2) {
 $result1 = 1;
 $result2 = 2;
}

function sub2() {
 $array['result1'] = 1;
 $array['result2'] = 2;
 return ($array);
}

sub1($result1, $result2);
echo 'sub1 result<br>';
echo $result1.'<br>';
echo $result2.'<br>';

$array = sub2();
echo 'sub2 result<br>';
echo $array['result1'].'<br>';
echo $array['result2'].'<br>';
0042nobodyさん2005/08/08(月) 21:59:30ID:???
>>41
即レスありがとうございます!
今後の参考にさせて頂きます
0043nobodyさん2005/08/09(火) 02:34:15ID:ZFB/xAI3
global変数でglobal $abc="abc";
といように宣言と同時に初期化ってできないですか?

また大規模なサイトを作るときはglobal変数は使っては
あまりよろしくないとどこかのサイトで言ってたけどreally?
0044nobodyさん2005/08/09(火) 04:21:50ID:+MEETmeS
てゆーか、globalなんてそうそう使わないから、使ってる時点で何処か無駄が生じてる。
0045432005/08/09(火) 05:25:36ID:???
ユーザー名、ホスト名など設定関係のファイルを用意して
メインファイルからユーザー名など書かれた設定を呼び出そうと
していました。その時にglobalで定義すれば楽なのかなーと
思っていてました・・・
defineで設定するか、関数を用意してそれを呼び出すのが
よいとですかね?
0046nobodyさん2005/08/09(火) 06:00:03ID:???
それなら定数でいいじゃない。
0047nobodyさん2005/08/09(火) 10:28:30ID:???
43じゃないけど。
定数はスカラーデータしか定義できないから、
設定ファイルで連想配列とか使った方がわかりやすい場合は
global ってのもありだと思うんだけど、識者の方どうですか?
0048432005/08/09(火) 10:47:50ID:???
ウェブページからユーザーに名前とか趣味とか書いてもらった
情報をphpファイルに渡すとき、情報を渡されたphpファイルに
DBにコネクトしに行くユーザー名、DB接続関数などを書いておくのが
効率がいいのか、

もしくはDB関連の関数を格納したphpファイル、ユーザー名など
書かれた設定ファイルを用意して、それを呼んできてやるほうが
効率がいいんでしょうか?
0049nobodyさん2005/08/09(火) 11:08:07ID:???
DB接続用のクラス、セッション管理クラス、リクエストの処理クラス、MVC各クラス、
この辺全部インスタンスをいちいち引数で参照私するのもわずらわしいので、グローバルな変数として
CもしくはMのクラスメソッド内で使っているのだが、globalにせん方がいいのだろうか?
0050nobodyさん2005/08/09(火) 11:08:20ID:???
>>48
厳密に言うと別ファイルをincludeする必要がない分、前者の方が実行効率は良い。
微々たるものだろうけど。
でも普通は後者。理由は考えて味噌。
ところで今回の質問も含めて、質問のレベルと
>また大規模なサイトを作るときは...
の一文が激しくマッチしないんだが。。。
バカにしているんぢゃなくてオジさんは心配だよ。
0051nobodyさん2005/08/09(火) 11:15:49ID:???
>>42
>>41は難しく書いてあるけど、これでいいからね。

function sub() {
 $a = 1;
 $b = 2;
 return array($a,$b);
}
0052nobodyさん2005/08/09(火) 11:31:44ID:???
function sub2() {
 $array['result1'] = 1;
 $array['result2'] = 2;
 return ($array);
}
と
function sub() {
 $a = 1;
 $b = 2;
 return array($a,$b);
}
では、まったく同じ処理ではないだろうに。
後者で充分な場合もあるし、前者のようにキーがあったほうが使いやすい場合もあるし。
>>51が「これでいいからね。」と断定する理由はなんぢゃろな。
0053nobodyさん2005/08/09(火) 11:48:43ID:???
>>49
シングルトンとかにして、参照したほうが美しいとは思う。
0054nobodyさん2005/08/09(火) 11:52:38ID:???
$a[0] = "1,あいう,3";
$a[1] = "2,けこさ,1";
$a[2] = "3,かきく,2";
とある時、カンマで分けてからそれによって配列をソートしたいんだけどどうしたらいいでしょう?

実行結果
・カンマ1個目まででソート
$a[0] = "1,あいう,3";
$a[1] = "2,けこさ,1";
$a[2] = "3,かきく,2";

・カンマ1個目〜2個目まででソート
$a[0] = "1,あいう,3";
$a[1] = "3,かきく,2";
$a[2] = "2,けこさ,1";

・カンマ2個目〜3個目まででソート
$a[0] = "2,けこさ,1";
$a[1] = "3,かきく,2";
$a[2] = "1,あいう,3";

こんな説明で意味わかりますかね?ヒントか、こうしたらいい、みたいのだけでもいいのでお願いします。
0055nobodyさん2005/08/09(火) 12:29:23ID:???
>>54
>こうしたらいい

そもそもの配列生成段階からおかしいので最初から考え直した方がいい
0056nobodyさん2005/08/09(火) 12:51:36ID:???
>>54
「カンマ2個目〜3個目まででソート」という表現が理解しづらいのだが。
求める結果を見る限り、カンマで区切られたフィールドの1〜3番目のどれかでソートしたい、でいい?
であれば、usort を使って、自前の比較関数内で
 explode で分解、指定のフィールド番号の値を取得、取得した値を比較
すればいいのでは。
取得するフィールド番号はグローバル変数にでも入れるしかないかな。
0057nobodyさん2005/08/09(火) 13:17:08ID:???
カンマで区切るのではなく、多次元配列にした方がいい気がするのだが不都合でもあるのかな。
0058nobodyさん2005/08/09(火) 13:53:25ID:???
<?php
print '<?php print \"PHP\"; ?>';
?>

『<?php print "PHP"; ?>』を表示させたいのですがうまくいきません。
どうすればいいですか?
0059nobodyさん2005/08/09(火) 13:58:06ID:???
\"の\がいらないような気配。
0060nobodyさん2005/08/09(火) 14:23:13ID:???
>>59 エラー
0061nobodyさん2005/08/09(火) 14:33:53ID:???
>>58
ブラウザのソース表示を見てみ
0062nobodyさん2005/08/09(火) 14:36:18ID:???
&lt;とか&gt;とかそんな次元の話だろ。馬鹿らしい。
0063nobodyさん2005/08/09(火) 14:38:37ID:???
>>58
<?php
print '&lt;?php print "PHP"; ?&gt;';
?>
0064nobodyさん2005/08/09(火) 16:56:32ID:???
//ここがメインで
switch($mode){
case '$data->Name': //一応仮に書いてますがこれじゃダメでした
$data->Name();
break;
default:
break;
}

//ここは別のユーザー関数
while($data = mysql_fetch_object($GLOBALS["dbexe"])) {
print " <TR>\n";
print " <TD><a href=\"$script?mode=$data->Name\">$data->Name</a></TD>\n";
print " <TD>$data->date</TD>\n";
print " <TD>$data->time</TD>\n";
print " </TR>\n";
}

function $data->Name () {
〜〜〜〜〜〜
}

こんな感じの
while文で取ってきた$data->Nameを元にリンクを作ってそこに飛ぶと$data->Nameで取ってきた名前だけの物を表示させようとしてるのですが、
while文で回してるためリンクは作れても$data->Nameが変わっていくのでちゃんと変数を渡せません。
$data->Nameは100種類くらいあってスイッチ文に100個ズラズラ名前を並べるのもさすがにメンド臭いのですが、どうやったら解決できますかね?
0065542005/08/09(火) 17:01:23ID:???
>>55ー57
レスありがとうございます。言いたいことは>>57のとおりです。
やっぱり>>57みたいな方法しかないですよね。なんかスマートにできないかなーと思ったもので。ありがとうござます。
0066542005/08/09(火) 17:05:22ID:???
>>57
それもありですけど他の方法もあれば知りたかったので。レス忘れてしまってスマソ。
■ このスレッドは過去ログ倉庫に格納されています