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

【PHP】下らねぇ質問はここに書き込みやがれpart14

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0850nobodyさん2006/01/11(水) 18:25:34ID:h33/EqTj
指定方法を教えてください。Plz
0851nobodyさん2006/01/11(水) 18:38:15ID:???
meta タグや htaccess を使うのでおおっと板違いだぁ
0852nobodyさん2006/01/11(水) 19:07:51ID:???
何がどう板違いなんだか;;
0853nobodyさん2006/01/11(水) 19:11:28ID:???
>>848
まずマニュアルを読む
マニュアルを読んで分からなければ丁寧な解説がされていそうな本を読む

こんなところで聞くだけ時間の無駄
0854nobodyさん2006/01/11(水) 19:23:12ID:923d4820
質問です。
簡単なデータの入力システムをphpとmysqlでつくっています。

"select * from テーブル"で

<table>
while ($col = mysql_fetch_array($rst)) {
<tr>
<td>$col["あああ"]</td>
<td>$col["いいい"]</td>
<td>$col["ううう"]</td>
</tr>
}
</table>

みたいにして、whileでループして表を表示させてるのですが、
表を見易くするために、一行ごとにバックの色を変えるにはどうすればいいでしょうか?
1行目は白、2行目はちょっとグレー、3行目は白.....みたいな。
よろしくお願いします。


0855nobodyさん2006/01/11(水) 19:30:42ID:???
条件分岐させればよいでしょ。

それにしても全角とは恐れ入った。
0856nobodyさん2006/01/11(水) 19:40:25ID:???
forの方がやり易いかな.

for ( $lp = 0; $col = mysql_fetch_array($rst); $lp++ ) {
$bg_class = ( $lp % 2 == 0 )? "bg_white" : "bg_gray";
echo <<<EOS
<tr class="$bg_class">
<td>$col["aaa"]</td><td>$col["bbb"]</td><td>$col["ccc"]</td>
</tr>
EOS;
}

といった感じ.スタイルシートは自分で書いてね.
0857nobodyさん2006/01/11(水) 19:41:18ID:???
>>854
俺はこんな感じでやってる
$max = 3;
$color = array("#000000","#ff00ff","#00ff00");

行 $lineとして
色 $color[$line % $max]
0858nobodyさん2006/01/11(水) 19:58:53ID:h33/EqTj
JavaScriptでエンコードした文字をPHPのrawurldecodeで元に戻すことは可能ですか?
0859nobodyさん2006/01/11(水) 20:15:13ID:???
>>858
そのエンコードによる。
0860まっぷ2006/01/11(水) 20:35:46ID:+n0M4RUL
mapserverでphp_mapscriptをつかって地図表示をさせようとしているのですが、
アクセスする際に
Warning: dl(): Unable to load dynamic library '/usr/lib/php/20020429/php_mapscript.so'
- /usr/lib/php/20020429/php_mapscript.so: cannot open shared object file:
No such file or directory in /home/httpd/html/phpinfo_mapscript.phtml on line 21

というエラーがでてしまって困っています。
環境は
vinelinux-3.1
php-4.4.1
mapserver-4.0.1 を使っています。

phpの何かがおかしいと思うのですが。。
/usr/lib/php/20020429というディレクトリは存在せず、
/usr/lib/php/の中にはphp_mapscript.soが存在します。

いろんなとこを調べ、php.iniのextension_dir = ./の部分を
extension_dir = "/usr/local/php-4.4.1/modules/"
にしたりしてみたのですがエラーはかわりませんでした。

何分初心者ですのでつたない文章ですみません。
御指導いただければと思います。。
お願いします。
0861nobodyさん2006/01/11(水) 20:46:40ID:???
>>860
/usr/lib/php/20020429/php_mapscript.soを作る
08628542006/01/11(水) 20:50:00ID:923d4820
855,856,857
スタイルシートのclassを変数にして条件分岐ですね。
すばらしいですねー。
最近phpを勉強しはじめました。
forはなんとなく好きになれません。
array()っていうのも使ったことないです。
前途多難ですががんばります。
ありがとうございました。
0863nobodyさん2006/01/11(水) 21:04:06ID:???
じゃあ foreach かな
0864nobodyさん2006/01/11(水) 21:27:20ID:???
だったらwhileでええやん
0865nobodyさん2006/01/11(水) 21:44:45ID:a+2jPX+b
なんでもええやん
0866nobodyさん2006/01/11(水) 23:52:35ID:???
>>862
漏れは、普通にmysql_fetch_arrayでまわすけど、まわす前にカウント用の変数を$iとして、それが偶数のときはこのcssクラス、奇数のときは・・・って感じだな。
先に件数を取得しておくと、テーブルなんかおしゃれにできる。
(最後の一行がわかるから。)
0867nobodyさん2006/01/12(木) 00:33:48ID:???
まじで下らねぇだと思うんですが、インスコ段階で詰まってます。
httpd下で動作させようと思ってるんですが
一応解説サイトや書籍などを見て、
php5ts.dll php.ini-dist を C:\WINDOWS\system32にコピって php.iniにリネームし
cgi.force_redirect = 0 に書き換えても
Security Alert! The PHP CGI cannot be accessed directly 言われます。

とりあえづXAMPPインスコして、そっちではPHP動くんであまり問題ないと言えばないのですが、
今度はこっちではCGIが動きません(htdocs.confでDocumentRootのパスとかは変えたんですが)
余談ですが、ActivePerlとかXAMPPアンインスコして
XAMPPだけインスコした状態で試したりもしたんですがダメでした。
まあそれはどうでもよくて、実際cgiとphpを連動させる事もないだろうから
別にcgiのテストはhttpdでやって、PHPはXAMPPでやればいいだろ、って言われればそれまでなんですが。
原因が気になってオナニーもロクにできません。
あ、オナニーはインスコ中にやってたのでどうでもいいです。
とにかくよろしくお願いします。
08688672006/01/12(木) 01:24:21ID:???
自己解決しました。
オナニーして寝ます。
0869nobodyさん2006/01/12(木) 09:51:22ID:???
Smartyの {cycle}
0870nobodyさん2006/01/12(木) 11:17:59ID:???
キーと値が格納された連想配列を文字列としてシリアライズしたり、
文字列から連想配列へデシリアライズする手段をさがしてます。そういう便利なものないですか。
(PHP4です)

0871nobodyさん2006/01/12(木) 11:26:53ID:???
>>870
extractとcompactではだめ?
0872nobodyさん2006/01/12(木) 11:38:49ID:???
>>871
ありがとう。調べてみます。
ぐぐってみたところ、serialize(),unserialize() というのもみつけました。

入力された複数の値→連想配列を作る→シリアライズしてDBに入れる
→別の画面などでDBからシリアライズしてきた文字をデシリアライズ(連想配列化)して表示

といった感じに使おうかと思ってました。
0873nobodyさん2006/01/12(木) 14:35:20ID:???
>>872
そういうのは普通にserialize()でよく行われてると思うよ。
08748722006/01/12(木) 14:41:36ID:???
>>873
ありがとうございマッスル
0875nobodyさん2006/01/12(木) 15:00:00ID:lQx6xwTN
ありがとうございマイケル
0876nobodyさん2006/01/12(木) 15:38:55ID:???
構造体の使い方かいてるサイトおしえてください
0877nobodyさん2006/01/12(木) 15:44:35ID:???
PHPの構造体って何?
0878nobodyさん2006/01/12(木) 15:55:20ID:???
ないの?
0879nobodyさん2006/01/12(木) 15:56:23ID:???
ちょっと前に見た、構造体と case 文のない言語はやだって言ってたやつとは違うよな?
0880nobodyさん2006/01/12(木) 16:06:13ID:???
あ、無いのか・・・
では、話が変わるのですが、変数の型がバリアントっぽいのですが
Cみたいにcharの配列でバイナリを扱う方法を教えてください
0881nobodyさん2006/01/12(木) 16:09:11ID:???
何がしたいのだ
知ってる言語の流儀を押し通そうとするのは賢い方法とは言えないぞ
0882nobodyさん2006/01/12(木) 16:12:43ID:???
あ、えーっと、じゃあわかりやすくCで書くなら
char aa[8]={ 0x01, 0x02, 0x03, 0x04, 0x00, 0x02, 0x03, 0xAA };
short bb = ((aa[[5] << 8) | aa[6]) & 0xFF;
例えばこんなこと↑
char のバイナリ配列なんでコードにNULLが含まれてることもあるみたいな
0883nobodyさん2006/01/12(木) 16:17:12ID:???
>>882
マニュアル見てこいよ
0884nobodyさん2006/01/12(木) 16:27:14ID:???
マニュアルじゃないけどPHPの説明を書いてるHPを何箇所かみたんだけど
バイトって概念がないのかわからんけど、なんかできないっぽいなあ
ちょっとマニュアルみてくるかな
0885nobodyさん2006/01/12(木) 16:28:18ID:???
てきとーなサイト見るよりマニュアルを見る方が何百倍もよい
0886nobodyさん2006/01/12(木) 16:33:29ID:???
>>884
概念はあるんだよ。
使っている奴が少ないだけ。
ユーザ側がまだまだCほど錬れていないから。
0887nobodyさん2006/01/12(木) 16:33:51ID:???
unpack して配列に突っ込んでやってみたら?
0888nobodyさん2006/01/12(木) 16:38:00ID:???
>>885
マニュアルて何故か簡単に説明してくれてないから敬遠しちゃうんだよね
>>886
おろ?まじですか。でもこれってCよりBasicに近い変数の扱いですよね
>>887
ああああああああああああああああああああ!!!
こんな関数があったんですか!!
これ早速ためしてみます
0889nobodyさん2006/01/12(木) 16:42:52ID:???
>>882
<?php
$a[] = pack("c", 0x01);
$a[] = pack("c", 0x02);
$a[] = pack("c", 0x03);
$a[] = pack("c", 0x04);
$a[] = pack("c", 0x00);
$a[] = pack("c", 0x02);
$a[] = pack("c", 0x03);
$a[] = pack("c", 0xAA);
$b = (($a[5] << 8) | $a[6]) & 0xFF;
echo bin2hex($b);
?>
0890nobodyさん2006/01/12(木) 17:01:27ID:???
>>889
激しくあり(ノД`。)
やっぱりやる方法はあるんですね。感謝です
0891nobodyさん2006/01/12(木) 17:24:13ID:???
元がcharの配列だったことには意味があったんじゃないのか??
0892nobodyさん2006/01/12(木) 17:30:39ID:???
Cではファイルから読み込んだりする時にchar型が便利だからじゃねえの?
0893nobodyさん2006/01/12(木) 17:41:14ID:???
それ以前に躓くPHPで書くよりC言語で書いた方が良いのではないかと。
0894nobodyさん2006/01/12(木) 17:50:31ID:???
a.txtというテキストファイルの内容をソートし、保存しなおしたいのですが
$a = "./a.txt";
$af = fopen($a, "w");
flock($af, 2);
asort($a);
fclose($af);
このコードでは上手くいきませんでした。正しいコードをご教授願います
0895nobodyさん2006/01/12(木) 17:59:07ID:???
>>894
とりあえずマニュアルを読む事をお勧めします。
0896nobodyさん2006/01/12(木) 18:04:47ID:???
>>894
asortに与えるべき配列はファイルの中身を配列にしたものであって、"./a.txt"という文字列ではない。
08978892006/01/12(木) 18:06:37ID:???
>>890
すまん。バイナリだと演算できなかった
バイナリをビット操作するときはunpackしてやらないとだめだ
それなら最初からpackするなよってことか
0898nobodyさん2006/01/12(木) 18:10:07ID:???
>>894
簡単に言うとファイルを開いてるだけで保存はおろか読み込みもしてない
0899nobodyさん2006/01/12(木) 18:16:31ID:???
>>897
あ、ひょっとして論理演算が?
phpはなかなか難しいですねー
0900nobodyさん2006/01/12(木) 18:18:40ID:???
つ $aa = "\x01\x02\x03\x04\x00\x02\x03\xAA";

論理演算て・・・
0901nobodyさん2006/01/12(木) 18:26:26ID:???
>>900
シフトは算術演算って言っといたほうがよかったかい?
0902nobodyさん2006/01/12(木) 18:28:45ID:???
>>901
ビット演算だろボケが。論理演算はtrue/falseとかand/orの類。
0903nobodyさん2006/01/12(木) 18:34:58ID:???
確かにPHPでbool型を使いたくなる時がある
0904nobodyさん2006/01/12(木) 18:36:44ID:???
使ったらいいじゃない
0905nobodyさん2006/01/12(木) 18:37:00ID:???
Mac OS X 10.4.3
$ /opt/local/bin/php -version PHP 5.1.1 (cli) (built: Jan 11 2006 20:26:52)
$ /opt/local/bin/phpunit --version PHPUnit 2.3.4 by Sebastian Bergmann.
$ pear -V
PEAR Version: 1.4.6
PHP Version: 5.1.1
Zend Engine Version: 2.1.0
/opt/local/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so
で、
<?php
class Numeric {
 public function add($x, $y) {
  return ($x + $y);
 }
 public function sub($x, $y) {
  return ($x-$y);
 }
}
?>
を
$ ls -a Numeric.php
$ phpunit --skeleton Numecir
 PHPUnit 2.3.4 by Sebastian Bergmann.
$
とプロンプトが返ってきて、「Wrote test class skeleton for Numeric to NumericTest.php」はなし。
NumericTest.php という空のファイルが生成されているだけで、中身はなし。
何が原因なのか、誰か教えて…・
0906nobodyさん2006/01/12(木) 18:44:38ID:???
phpunitは使ったことないけど、
Numeric
Numecir の違いじゃないの?
09079052006/01/12(木) 19:04:16ID:???
>>906
ファイル名とクラス名が同じだから、
名称が問題になっているわけではないと思うんだ。
いちおうスケルトンは生成されているし。

ttp://www.phpunit.de/pocket_guide/2.3/en/installation.html の
ファイル名の変更は問題ないと思うし…。
$ ls -l /opt/local/bin/ | grep php
-rwxr-xr-x 2 root admin 8918652 Jan 11 20:27 php
-rwxr-xr-x 2 root admin 1326 Jan 11 20:29 php-config
lrwxr-xr-x 1 naotaka admin 18 Jan 3 19:32 php5 -> /opt/local/bin/php
-rwxr-xr-x 2 root admin 4107 Jan 11 20:29 phpize
-rwxr-xr-x 1 root admin 1801 Jan 12 18:11 phpunit

xdebug は有効になっているし、assert 関数の評価も有効になっているので、
設定の問題なのかどうかもちょっと切り分けられなくて、困っている…。
ググッても検索結果に参考になるものがないのが、利用者数が少ないのを物語っているよ。
09088542006/01/12(木) 19:06:04ID:pSKfqlaX
みなさんのレスを読んで納得したつもりだったのですが、
家に帰って帰ってみたら、やっぱり分かってませんでした。

857さんのやりかたがシンプルでいいなと思ったのですが、
行$lineを取得する方法がわかりませんでした。

ttp://php.thm.jp/index.php?know=table_color
これは、856さんのやり方に近いと思うのですが、自分のコードにはうまくあてはめられませんでした。

866さんの方法もよさそうなのですが。。。

どなたかアドバイスをお願いします。
0909nobodyさん2006/01/12(木) 19:09:40ID:???
>>908
866でやってみろよ、簡単だから
09108542006/01/12(木) 19:26:34ID:pSKfqlaX
レスどうもです。
自分のコードには866のやり方が合ってると思うのですが、
具体的にどう書くのか、いろいろと試しているのですが、
全部同じ色になってしまって困っています。
ヒントでもいただけるとうれしいです。
0911nobodyさん2006/01/12(木) 19:43:55ID:???
>>910
単純に現在の行が何行目なのかを判定するための変数を設定して、
行が変わる毎に何行目なのかを判定して、背景のコードを print 文なりで付加すればいいだけ。

これぐらいは自分で考えて条件式を書けないと、
プログラムのセンスがないのかもしれないよ。
09129112006/01/12(木) 19:47:13ID:pSKfqlaX
ですよねぇ。ありがとうございます。

>単純に現在の行が何行目なのかを判定するための変数を設定して、
>行が変わる毎に何行目なのかを判定して、背景のコードを print 文なりで付加すればいい

という理屈はわかっているのですが、「現在の行が何行目なのか」を判断できませんorz

もうちょっと格闘します。ありがとうございました。
0913nobodyさん2006/01/12(木) 20:03:14ID:???
以前、リファレンス渡しの話題で、リファレンス渡しをすると遅くなってしまう場合がありましたが、
ログをなくしてしまったので、どのような場合にすべきではないかもういちど挙げていただけませんか?
0914nobodyさん2006/01/12(木) 20:08:39ID:???
>>913
リファレンス渡し自体をしなければいい。
09159112006/01/12(木) 20:49:12ID:???
>>912
単純に書けば、こんなもんだ。
スマートに書きたいのなら、自分で工夫する。
print("<table>\n");
$i = 0; // 行数を単純にカウント
while($col = mysql_fetch_array($rst)) {
 if($i == 0) {
   print("\t<tr bgcolor=\"#ffffff\"\n");
   $i++;
  } elseif($i == 1) {
   print("\t<tr bgcolor=\"#000000\"\n");
   $i++;
  } else {
   print("\t<tr bgcolor=\"cccccc\"\n");
   $i = 0; // 3行目に来たら、行数を0にして、最初の背景色に戻す
  }
  print("\t\t<td>$col['あああ']</td>\n");
  print("\t\t<td>$col['いいい']</td>\n");
  print("\t\t<td>$col['ううう']</td>\n");
  print("\t</tr>\n");
}
print("</table>\n");
09169122006/01/12(木) 21:30:28ID:pSKfqlaX
>>915
ありがとうございます!
悩んだ結果一応ちゃんと動作するコードを書けたことを報告にきたのですが、
見にきたらコード全文が載っててびっくりしました。

僕の書いたコードはこれです。

while ($col = mysql_fetch_array($rst)) {

$col[0]=0;
@$i++;
if ($i%2 == 0) {
$body .= "<tr bgcolor='#ffffff'>";
}
else {
$body .=  "<tr bgcolor='#cccccc'>";
}

$body .= "<td>".$col["あああ"]."</td>\n";
$body .= "<td>".$col["いいい"]."</td>\n";
$body .= "<td>".$col["ううう"]."</td>\n";
}
$body .="</tr>";
09179122006/01/12(木) 21:31:26ID:pSKfqlaX
$col[0]には自動採番のインデックスが入っていて、
レコードを削除したりすると欠番になったりするので、
強引に$col[0]=0;とやって++しました。
++の前に@を付けないと、Noticeエラーがでます。

これは、ダメな感じの書き方なんでしょうか?アドバイスお願いします。
今から915さんのコードと比較検証します。

0918nobodyさん2006/01/12(木) 23:13:02ID:???
>>917
> ++の前に@を付けないと、Noticeエラーがでます。
$i = 0; ってどこかでやってる?
$col[0]=0; も謎…
09199112006/01/13(金) 00:11:54ID:???
>>917
> ++の前に@を付けないと、Noticeエラーがでます
>>918が指摘しているけれど、変数 $i を必ず初期化すること。
Notice エラーが出るのは、$i++; を記述する前に、
$i = 0; と初期化していないから。

> $col[0]には自動採番のインデックスが入っていて、
> レコードを削除したりすると欠番になったりする
必要のないカラムなら、SQL で SELECT する際にそのカラムを
取得しない。
必要なカラムなら、条件式でカラムに値が格納されているかどうかを
判定したら?
0920nobodyさん2006/01/13(金) 00:54:15ID:???
>>916
css
.line0 { background-color: #ffffff }
.line1 { background-color: #cccccc }

$index = 1;

while ( …

$index = 1 - $index;
$body .= '<tr class="line' . $index . '">';

…
09219122006/01/13(金) 01:00:42ID:SV3c3aSx
レスありがとうございます。
915さんのコードを参考に、本を読んだりしながら検証した結果、
自分の書いたコードがいかにダメかわかりました。
確かに$col[0]=0は謎ですね...。というか、ホントに意味がないです。
mysql_fetch_arrayで取得した配列の中身をどうにかするものだと
思いこんでいた為にひらめいた苦肉の策でした。
変数の初期化はお約束のようなものなのでしょうか?
$i=0;をやらないと、Noticeエラーが出るというのは初耳です。
なにより、$hoge++というのを今まで使ったことがなかったので
かなり勉強になりました。
本当にありがとうございました。
09229122006/01/13(金) 01:06:15ID:SV3c3aSx
>>920
すごいシンプルですね。すばらしいです。
$hoge++とかはやらないんですか?
いまぱっと見ただけでは、$index = 1 - $index;
がどういう値を出すのか、自分には分からないです。
ちょっと本を読んで研究してみます。
ありがとうございます。
09239112006/01/13(金) 01:10:53ID:???
>>921
> $i=0;をやらないと、Noticeエラーが出るというのは初耳です。
基本的に変数の初期化は必須。今後、Java なり C をやればわかる。
今回、Notice エラーが出るのは、初期化されていない変数 $i には、
何も値が代入されていないため、$i++; をした際に、PHP はインクリメント後の
値が不明なため、Notice エラー が出るの。
そのため、$i = 0; と初期化することによって、0 + 1 = 1という加算が成立する。

もしかして、++$i; と $i++; も曖昧なようなら、演算式が詳しく書かれている
参考書から参考にした方がいいと思うよ。
09246752006/01/13(金) 01:18:43ID:FGHLzOq/
>>845
確かにそうですね。今度検証してみます。
ありがとうございます。
0925nobodyさん2006/01/13(金) 01:21:18ID:???
>>920の $index = 1 - $index; にちょっと感動。
こういうやり方もあるんだねぇ。

>>922
いや、本を読んでも分からないと思う。
ちょっと考えれば分かることだから、紙にでも書いてじっくり考えてみて。
分かるときっとプログラミングが楽しくなるよ。
0926nobodyさん2006/01/13(金) 01:21:55ID:???
$color = "";
while ( … ) {
$color = ($color == "#ffffff")? "#cccccc" : "#ffffff" ;
echo "<tr bgcolor=\"$color\">\n";

これも置いとくね
0927nobodyさん2006/01/13(金) 09:35:55ID:???
ところでNoticeってエラーなのか?
0928nobodyさん2006/01/13(金) 09:37:06ID:???
>>922
> いまぱっと見ただけでは、$index = 1 - $index;
> がどういう値を出すのか、自分には分からないです。

どういう値を出すのかは、
その直後にecho $indexとでもすれば分かること。
変数の中身を表示して確認しながらやると分かりやすくなるぞ。
0929nobodyさん2006/01/13(金) 11:32:17ID:???
>>927
一応エラーだね。
『これは、スクリプト実行時に何かエラーが発生したが、
通常のスクリプト実行を継続できることを示します。
例えば、値が設定されていない変数にアクセスしようとした場合や、
存在しないファイルについて stat() をコールした場合 です。』

NOTICE(通知) < WARNING(警告) < ERROR(エラー) の順。
NOTICE、WARNINGは実行を継続、ERRORは停止みたい。
0930nobodyさん2006/01/13(金) 11:35:19ID:???
Noticeはなんか重箱の隅つついたようなモノばっかりでいやになった。
0931nobodyさん2006/01/13(金) 11:41:27ID:???
初期化しないで使える、ほぼ形無し変数も凄いと思うけどな。
だから初心者でも使える仕様になっているんだしね。
0932nobodyさん2006/01/13(金) 11:49:55ID:???
>>930
でもつぶしておくと変なハマり方しにくくなるのは間違いないよ
0933nobodyさん2006/01/13(金) 11:55:00ID:???
そりゃそーだが、ほとんどの場合はそんなとこじゃはまらないようなものばかりで、
Notice対応の方がバグ潰しよりよっぽど手間にならないか?
何のために省略ができるようになってるのか考えると不毛だと思うんだけどな。
0934nobodyさん2006/01/13(金) 12:05:00ID:???
別に全部の省略が Notice 対象になるわけじゃないし、そんなに
手間とも思わないけど。
0935nobodyさん2006/01/13(金) 12:10:52ID:???
変数名が被ったりすると、たま〜に変数の初期化忘れて嵌る時があるw
0936nobodyさん2006/01/13(金) 12:18:10ID:???
$array = array('foo', 'bar', 'baz');
$new_array = array();
foreach ($array as $item) {
 $new_array[] = $item . '.html';
}

これを一発でやってくれる関数はありますか?
マニュアル読んだのですが、それらしいのが見つかりませんでした。
しかしPHPならあるんじゃないかと思って、質問してみました。

0937nobodyさん2006/01/13(金) 12:31:04ID:???
>>936
$new_array = array_map(create_function('$v', 'return "$v.html";'), $array);
09388892006/01/13(金) 12:31:37ID:???
>>936
>>936
俺に出来るのは
<?php
$array = array('foo', 'bar', 'baz');
array_walk($array, create_function('&$v', '$v = $v.".html";'));
var_dump($array);
?>
ここまでだ
0939nobodyさん2006/01/13(金) 13:02:14ID:???
>>935
そんな変数名がかぶるような長いブロック書いちゃダメ
(ひょっとすると全部グローバルかもしれんが)
細かく function で分けるべし
class にしてしまえば必要なものだけ var で(class内で)
共有できる

オブジェクト指向とか考えなくてもメリットは大きいぞ
0940nobodyさん2006/01/13(金) 13:06:12ID:???
>>914
できればそうしたいのですが、
70kBほどのXMLのオブジェクトを扱いたいので、 それを値渡しするのはできるだけ避けたいと考えています。
0941nobodyさん2006/01/13(金) 13:27:19ID:???
>>940
値渡し(&を使わず代入)を避ける必要がない。素直に書けば不必要なコピーは起こらない。
パフォーマンス改善を目的とするリファレンス渡しはいかなる場合も避けるべき。
0942nobodyさん2006/01/13(金) 13:29:31ID:???
>>937,938
そのものズバリという関数はないということですね。
素直に関数を定義します。
ありがとうございました。

function array_suffix($array, $suffix) {
 if (! $array) return NULL;
 $array2 = array();
 foreach ($array as $item) {
  $array2[] = $item . $suffix;
 }
 return $array2;
}
0943nobodyさん2006/01/13(金) 14:14:30ID:???
>>942
贅沢なやつだな。
$new_array = preg_replace('/$/', '.html', $array);
0944nobodyさん2006/01/13(金) 16:46:16ID:???
>>941
分かりました。
PEARのDBのサンプルソースに&が必ずついているので、参照渡しは必須のものだと思っていました。
ありがとうございます。
0945nobodyさん2006/01/13(金) 21:35:56ID:???
perlでいうuse encoding()に当たる関数ってないですか?
0946nobodyさん2006/01/13(金) 23:12:04ID:???
use encodingは関数じゃないよーな。
そんでもってPHPはその機能は内蔵してないか。
php.iniで入出力文字コードの設定するだけじゃないの?
0947nobodyさん2006/01/14(土) 00:44:57ID:???
>>945
Perlは知らないけど、>>946の話を聞く限り
mb_http_output() と mb_internal_encoding() あたりじゃないかと思われ。
php.iniいじったり ini_set() 使うのもありだけど。
0948nobodyさん2006/01/14(土) 04:30:51ID:???
外部ファイルに設定データなんかを保存している場合、
変数への代入等のPHP文をそのファイルに記述してrequireするのと、file()で読み込んで本体のスクリプトで処理するのとではどっちの方が軽快に動くんでしょうか?
0949nobodyさん2006/01/14(土) 04:38:46ID:???
ほとんどの場合、requireの方が速くなるかと
0950nobodyさん2006/01/14(土) 07:45:24ID:aUotD7Tf
クラスのextends元を動的に選択することはできますか?
レス数が950を超えています。1000を超えると書き込みができなくなります。