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

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

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

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

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

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0159832008/12/25(木) 15:30:11ID:2wMGCLSI
>>157
有り難う御座います。正確に動作しています。
こういう方法は思いつきもしませんでした。

>>158
ArrayObjectを使用したことがないのでちょっとあれなんですが、
上記のコードよりも簡単に>>153を実装できるのでしょうか?
宜しければサンプルコードを教えて下さい。
0160nobodyさん2008/12/25(木) 15:41:03ID:???
>>159
>>153みたいな実装はしないってことなんだけどね。
a,b,cに意味を持たせる必要があるわけでしょ。
それだったら、
$quickTime
->getBlock(2)
->getMoov("main")
->getTrack("hoge");
みたいに、それぞれの階層に合わせたオブジェクトを作成して、
メソッドで順次取得するっていう話。

んで、ArrayObjectを使えばショートカット的に配列で処理できる。
$quickTime[1]["main"]["hoge"]で、参照を取得できるから、
値のセットもゲットも普通に実装出来るしね。
まぁ、offsetSetの時に一工夫は必要だけど。

ただ、簡単に実装というのは人によって意味が違うから何とも言えん。
わかりやすいかどうかは主観の問題だからね。
0161nobodyさん2008/12/25(木) 15:44:18ID:???
setValueの引数を可変にすりゃいいんでね?
0162832008/12/25(木) 16:10:25ID:2wMGCLSI
>>160
現状でパース後の配列は
$quickTime[1]["main"]["hoge"] = $data;
のようになっています。

$arr = array(1, 'main', 'hoge');
から
$quickTime[1]["main"]["hoge"]
にどうsetやgetが簡単にできるかっていうので悩んでいます。

わかりやすいというよりかは直感的な操作が目的です。
確かにそのように関数作るのも良いのですが、ツリー型で出来れば記録したいところです。
ただAtomってのはややこしいんですが、同一断層に同じ名前のAtomが出てくることもあるので、
そこら辺の条件分岐をやってるとどうしても複雑になってきます。
XMLに似てる感じです。

>>161
結局内部ではarrayとして扱われるのでそれをどう処理するかがミソです。
0163nobodyさん2008/12/25(木) 17:28:45ID:???
>>83
foreach + 参照渡しを使えばいいよ

$tree = array('a' => array('b' => array('c' => 'C')));
$indexes = array('a', 'b', 'c');

$node =& $tree;
foreach ($indexes as $index) {
  $node =& $node[$index];
}

echo 'node: ', var_export($node, true), PHP_EOL;
echo 'tree before: ', var_export($tree, true), PHP_EOL;
$node = array('new' => 'value');
echo 'tree after: ', var_export($tree, true), PHP_EOL;


注意点は $value =& $array[$key] が実行された際にキー $key が存在しない場合
無言で配列に要素が作られてしまう事
これはPHPのアンドキュメントな動作なので
嫌なら array_key_exists() でチェックしてね
0164nobodyさん2008/12/25(木) 19:23:56ID:???
$indexesは
$indexes = array_keys($tree);
でいいな
0165nobodyさん2008/12/25(木) 19:39:15ID:???
>>164
よくない。何質問されてるのか分かってないのかよ
0166nobodyさん2008/12/25(木) 19:49:40ID:???
>>163
それは質問の答えになってないんじゃない?
新しいノードを追加じゃなくて、cにarrayが追加になってるよね。
c=>'C'の'C'を書き変えたいわけでしょ
0167nobodyさん2008/12/25(木) 19:52:41ID:???
書き換えは>>157で完結してるからそれでいいんじゃない?
foreachで回すならarray_reverseしてもいいけど。

ノードを扱うならappendなのかsetなのかgetなのかが明白な
IteratorってのがFAだとは思うが。
01681662008/12/25(木) 20:16:57ID:???
とはいえ、>>163は参考になる
ノードの追加も書き換えも、ターゲットにしたノードに対して自由にできるわけだ。
0169nobodyさん2008/12/25(木) 20:27:42ID:???
AMFPHPの質問はここで聞いてもいいですか?

FlexからArray型の配列やByteArray型の配列をPHPに渡したいんですが、
PHP側ではObjectとして認識されます。これは、どうやったら
中身を取り出す事ができるんでしょうか?
0170nobodyさん2008/12/25(木) 20:36:02ID:???
>>169
もっとも単純なのは、get_object_vars かな。

取得したObjectを調べればいいと考えれば、
ReflectionObject::export($obj);
で、プロパティやメソッドをチェックしてそれを使う。
017183@規制2008/12/25(木) 20:40:17ID:gzkDkyEF
規制中なので携帯から失礼します

getはforeachぶん回しした後でissetでキーを確認すれば良いんで簡単なんですが
setは書き換えが何度もあるので>>157のを元にちょっと面倒ですが書き換えだけの関数を作りました。
ただ>>163のような参照っていう手もありますね。

>>168
Array/ArrayObjectの違いってなんなんでしょうか?
JavaのString/StringBufferみたいに書き換えメインなら後者使えって感じですか?
0172nobodyさん2008/12/25(木) 21:06:26ID:???
>>171
168?? ま、いいけど。
だいたい、そんな感じだけど、書き換えメインだからってわけじゃない。
あんまり気にしなくていいよ。質問スレなのに語ってしまってスマソ。
0173nobodyさん2008/12/25(木) 21:30:25ID:???
いい加減な事ばっか答えてんな

>>171
Javaで言うプリミティブ型と参照型の違い、
bool 型と Boolean クラスの違いと考えて欲しい
0174nobodyさん2008/12/25(木) 22:44:06ID:???
>>173
> Javaで言うプリミティブ型と参照型の違い
それは、そうなんだけどね。
「だいたい、そんな感じ」っていう程度の答えで収めちゃいかんかね・・・
0175nobodyさん2008/12/26(金) 09:10:34ID:???
見返り求めない辛抱とか苦労は日本人の美徳って教わったでしょ??ww
0176nobodyさん2008/12/26(金) 09:11:08ID:???
エンジニア主導で作ると、動いたところで満足してしまう。
『ちゃんと動いているから、あとは使う人が分かってくれる
だろう』と、考えをストップするところがあった。本当は、動
いたものを説明して分かってもらい、使ってもらうところま
で来てやっと完成なのに
0177nobodyさん2008/12/26(金) 09:31:34ID:YvHk/8hR
ファイルロックとは、何をブロックしているのか?

fopenをブロックしているのか?
それとも、fgetでの読み取りをブロックしているのか?
0178nobodyさん2008/12/26(金) 09:35:59ID:???
人力検索=3 つ ttp://ja.wikipedia.org/wiki/ファイルロック
0179nobodyさん2008/12/26(金) 09:44:32ID:???
>>176
ああ、もろそれだわ。でもめんどい
0180nobodyさん2008/12/26(金) 09:48:29ID:???
面倒なら、辞めれば?自動車関係の派遣にでもなれ
0181nobodyさん2008/12/26(金) 09:51:47ID:???
めんどいから後はユーザの自助努力に任せるよ
0182nobodyさん2008/12/26(金) 09:53:25ID:YvHk/8hR
ファイルロックとは、何をブロックしているのか?
0183nobodyさん2008/12/26(金) 09:54:11ID:YvHk/8hR
fopenしようとしたときにそれをブロックするのか?

それとも、fopenは自由で、
そのあとにfgetでファイルの内容を読み取ろうとしたときに
ブロックするのか?
0184nobodyさん2008/12/26(金) 09:55:59ID:???
>>182
そういう基本的なことはマニュアルに書いてあるのでマニュアル読め
0185nobodyさん2008/12/26(金) 10:03:30ID:YvHk/8hR
注意: flock()は、ファイルポインタを必要とするため、
(fopen()へ引数"w"または"w+"を指定して)書き込
みモードでオープンすることにより丸めるファイルに
アクセス保護する 特別なロックファイルを使用する
必要があるかもしれません。

↑この日本語意味わかんねーんだけど?
0186nobodyさん2008/12/26(金) 10:03:31ID:???
>>182
せめて、flockしたがfopenではじかれないけどなぜ?ぐらいにしろよ
それでもダメダメだが・・
"ファイルロックとは"って、汎用的な質問ありえんw
荒しだぞそれ。
0187nobodyさん2008/12/26(金) 10:04:30ID:???
>>185
日本語力がないのをマニュアルのせいにするな
日本語の勉強ならスレチ
0188nobodyさん2008/12/26(金) 10:04:38ID:YvHk/8hR
flockはfopenをはじかないって意味?
キモヲタはちゃんと日本語しゃべれよ
0189nobodyさん2008/12/26(金) 10:07:01ID:???
>>188
flockはfopenをはじかないよ
0190nobodyさん2008/12/26(金) 10:08:10ID:YvHk/8hR
>>189
そう、そういう明快で簡潔な回答がほしかった
ありがとう、ありがとう
次からもよろしくおねがい
0191nobodyさん2008/12/26(金) 10:09:08ID:YvHk/8hR
次の質問

共有ロックってなんの意味があるの?
0192nobodyさん2008/12/26(金) 10:09:49ID:???
>>190
そうそう。せめて、>>186の指示通り>>189のような質問にしてくれ
0193nobodyさん2008/12/26(金) 10:10:53ID:???
>>191
冬休みだと暇だな。
>>186
0194nobodyさん2008/12/26(金) 10:10:54ID:???
新スレになってまで寄生してんじゃねえよ
0195nobodyさん2008/12/26(金) 10:13:00ID:???
相手するなよ
0196nobodyさん2008/12/26(金) 11:24:10ID:YvHk/8hR
http://jn.swee.to/cano/lock/index.shtml

このページおもろい
0197nobodyさん2008/12/26(金) 11:30:57ID:???
まあ残念ながら世の中にはこういう怪しいカウンタ
は多数存在します。本来カウンタで同じ数字が2つ
出てきたり、数字が出てこなかったりしたらとんでも
ないことです。「OSとロックの仕様の限界でしょうが
ないんですよ」という名言を聞いたことがありますが
、そんな人に会員番号の発行プログラムとか、コン
サートチケットや座席番号発行とかのアクセスが集
中する業務プログラムを委託しちゃったら怖すぎま
す。
0198nobodyさん2008/12/26(金) 11:52:45ID:???
ちゃんとした排他処理さえできていれば、「自
分が処理をしている間はずーっとファイルは
開きっぱなしで自分以外の誰にも触らせな
い」のが、データを守るためには最も安全な
のです。

「データファイルが大きくなるほど、データが
飛ぶ可能性が飛躍的に高まります」とか「こ
まめにファイルを閉じることでデータが飛ぶ
危険を最小限にしています」とか言っている
人のCGIは信用しないようにしましょう。2回
もファイルを開いたり閉じたりすると、その間
に何が起こってるか分からない、怖い! …
そういう感覚が自然に沸くようになるとOKで
す。一旦理解すれば、簡単なことですよね?
0199nobodyさん2008/12/26(金) 11:55:17ID:???
そのページの作者に恨みでもあるの?
0200nobodyさん2008/12/26(金) 12:15:28ID:???
相変わらず頭の悪い改行だな
紹介時にはID出すのに
コピペするときだけID隠すとか細かい芸はしなくてよろしい
さっさとトリップつけてくれ
俺の視界から消し去ってやるから
0201nobodyさん2008/12/26(金) 12:24:09ID:???
cakephp に限ったことじゃないかもしれなけど、
できるプログラマーって何を聞いても親切に教えてくれるよな。

できないプログラマーってひたすら人をバカにしたがるよな。
なんなんだろうなこの違い。やっぱり謙虚さが大事なのかな。
0202nobodyさん2008/12/26(金) 12:41:22ID:???
ブスがさ、自分よりブスな奴を必死で探してきて、
「この娘、ブスでしょ?」
0203nobodyさん2008/12/26(金) 12:42:08ID:???
人に物を聞く態度じゃない
それがわからないなら死ねばいい
0204nobodyさん2008/12/26(金) 12:43:20ID:???
ほれ
http://pc11.2ch.net/test/read.cgi/php/1158647441/
いつもの質問の人はこっちに移動してくれい
0205nobodyさん2008/12/26(金) 12:44:14ID:???
>>196
ずいぶん、浮世離れしたページだと思ったら、20世紀のサイトじゃないか。
掲示板がスパム満載になってて、マルウエア放置w
それで基本的なことを、勘違い付きでエラそうなこと書いてんなよなww
0206nobodyさん2008/12/26(金) 12:46:03ID:YvHk/8hR
 1.ロックする
 2.読み込む
 3.一時データファイルに書き込む
 4.一時データファイルを正規ファイル名にリネームする
 5.ロック解除する

これってしないとダメなの?
0207nobodyさん2008/12/26(金) 12:47:24ID:???
>>206
君は>>204に移動しないとダメなの
0208nobodyさん2008/12/26(金) 12:55:00ID:???
 ⊂ ⊂ヽ、  /)/)
          c、   `っ(  ヽ
        (   v)c、  `っ
          V''V  (   v)  / ̄`⊃
               V''V   |  ⊃
                   (   v)  ハ,,ハ
                     V''V  ( ゚ω゚ )
                         ⊂   ⊃
                           >   )
                          (/(/

                            ハ ,,ハ
                            ( ゚ω゚ )  お断りします
                           /    \
                         ((⊂  )   ノ\.つ))
                            (_⌒ヽ
                             ヽ ヘ }
                         ε≡Ξ ノノ `J
0209nobodyさん2008/12/26(金) 13:01:50ID:???
>>206

>>1は守ってください

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

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

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
0210nobodyさん2008/12/26(金) 13:05:20ID:???
>>209

             .   ・ .ヽOノ
       ーO    . ,. _ノ
        ノヽ-=つ  ’'   (
         〈
0211nobodyさん2008/12/26(金) 13:07:12ID:???
移動しないというなら話は早い
一切シカトでよろしく
たまにID伏せるが特徴あるので分かるだろう
0212nobodyさん2008/12/26(金) 13:07:46ID:Ag3DX8xC
こんにちは
【OS名】centos5 linux
【PHPのバージョン】php5.26

【質問内容】
PHPをテンプレートエンジンとして使用するとき
<?php if($foo): ?>
<div>fooだよ</div>
<?php endif ?>
こんな風にかけるじゃないですか?
多分{}を使うブロック構文はこの書き方がいけそうな気がするんですが
switchもいけるのでしょうか?いまいち書き方がわからない。

たしか公式マニュアルでこの書き方の解説が書いてあるところを見た気がするんですが
探しても見つかりません。URL知っていたら教えてください。

お願いいたします。
0213nobodyさん2008/12/26(金) 13:09:10ID:???
211 :nobodyさん [sage] :2008/12/26(金) 13:07:12 ID:???

移動しないというなら話は早い
一切シカトでよろしく
たまにID伏せるが特徴あるので分かるだろう
02142122008/12/26(金) 13:11:36ID:Ag3DX8xC
http://www.php.net/manual/ja/control-structures.alternative-syntax.php
すいません。いきなり見つけました。

switchもいけるっぽいですね
試してみます。
0215nobodyさん2008/12/26(金) 13:25:18ID:YvHk/8hR
「OOPのメリットの一つはカプセル化」
とよく書いてあるが、もしかして、カプセル化しないと
すべてのサブルーチンは自動的に全部
グローバル化してしまうの?
0216nobodyさん2008/12/26(金) 13:31:40ID:???
-+*---*d-----
02172122008/12/26(金) 13:33:35ID:Ag3DX8xC
<?php switch($foo): ?>
<?php case 'a': ?>
<div>aだよ</div>
<?php break; ?>
<?php endswitch ?>
だめみたいですね
下は動きました。
<?php
switch($foo):
case 'a':
echo 'aだよ';
break;
endswitch;
?>
上の方が書けたら便利なのになあ。書き方がまずいのか、それとも不可能なのでしょうか?

>>215
カプセル化ってもっと抽象的な意味じゃないのかな?

例えば部下にレポートを書くように命令するんだけど、
その部下がどうやって調べたとか、レポートを何のソフトで入力したとか、そういう詳しいやり方は一切関知しないけど、
欲しいレポートだけは確実に手に入る

こんな感じだと思ってるけど。
0218nobodyさん2008/12/26(金) 13:38:05ID:???
-+*---*d2.
0219nobodyさん2008/12/26(金) 13:42:02ID:???
回答は IDを見て 書き込みやがれですぅ
0220nobodyさん2008/12/26(金) 13:44:39ID:???
自演ですので、ID見ても書きますですぅ
0221nobodyさん2008/12/26(金) 13:47:27ID:???
>>217
htmlモードで<div>aだよ</div>
ここの部分は出力されてるわけで
phpモードでの条件文に関係なくここは必ず表示されてしまう
条件文によって表示させたいのなら
phpモード内でやらないとだめだろう
0222nobodyさん2008/12/26(金) 13:52:53ID:???
>>221
全然間違い
0223nobodyさん2008/12/26(金) 13:55:45ID:???
間違いじゃないだろ
そもそも>>212の挙動が不自然
こっちがバグとしか思えん
0224nobodyさん2008/12/26(金) 13:57:11ID:???
>>222
あと間違いだと思うなら一言で片付けるんじゃなくてそれを正してくれ
0225nobodyさん2008/12/26(金) 14:01:11ID:???
>>223-224
質問者じゃないんなら、余計な御世話だろ
でなけりゃ、自作自演

>>221
[だめみたいですね]じゃなくて、
エラーがでるのか、
期待した動作と違うなら、期待した動作はなんなのか、
ちゃんと、>>1をよく読んで質問してください。
そうすれば、答えが貰える。ちうか自然に答えに辿り着く。
0226nobodyさん2008/12/26(金) 14:02:36ID:???
>>223は>>214をちゃんと読め
0227nobodyさん2008/12/26(金) 14:04:07ID:???
{}で囲めばいいんじゃん?
<?php switch() {
0228nobodyさん2008/12/26(金) 14:04:47ID:???
途中で送信してしまった
まぁいいや
しかしPHPは気持ち悪い言語だな
0229nobodyさん2008/12/26(金) 14:06:44ID:???
>>228がキモイだけ
0230nobodyさん2008/12/26(金) 14:09:49ID:???
質問君が、自作自演に走る時って、恥ずかしいのを隠すためなんだよね。うんうん。
0231nobodyさん2008/12/26(金) 14:10:08ID:???
phpしかやったことない雑魚はphpをけなされるとお顔が真っ赤になるようです
0232nobodyさん2008/12/26(金) 14:16:03ID:???
>>231はjspもキモイらしいw
0233nobodyさん2008/12/26(金) 14:18:30ID:???
jspって(笑)
0234nobodyさん2008/12/26(金) 14:29:35ID:Mk7Gnz+a
PHP5.2.8です。

テキストファイルを指定されたフォーマットに基づき、
行毎に取り出したいプログラムを作ろうとしています。
(任意のアクセスログの解析プログラムです)

フォーマット自体の Syntax はまだ未定なんですが、
今後取り出したい項目が増えることを想定しています。

例えば、以下のようなフォーマットだった場合。
$format = '%{ip} %{host}';

テキストファイル(アクセスログファイル)の各行とマッチングをし、
「127.0.0.1 example.com」という行があれば、
$data[0]['ip'] = '127.0.0.1'
$data[0]['host'] = 'example.com'
という形でデータを取り出したいです。

こういった場合、どういったロジックで書けば良いのでしょうか。。。

というか、こんなことは結構良くありそうなので、
PEAR でライブラリを探してみましたがそれらしきものはありませんでした。
ライブラリがあれば理想ですが、ご存じでしたら教えて下さい。

よろしくおねがいします。
02352342008/12/26(金) 14:33:44ID:Mk7Gnz+a
すみません、大事なことを書き忘れました。

指定フォーマットが可変なのが今回の目標です。

上述例であれば、半角スペースで explode() すればよいのはもちろん分かるんですが、
例えば、
$format = '%{ip}<>%{host}' となったり、 (KENT式)
$format = '%{ip} "%{host}"' になるかもしれない、ということです。

動的に正規表現を無理矢理作るようなイメージなのでしょうか…。

同じイメージとしては、
AWStats でのログのフォーマットを指定出来るところ、あれのイメージです。

よろしくおねがいします。。。
0236nobodyさん2008/12/26(金) 14:36:57ID:???
>>153あたりからの話題が参考にならないだろうか?
02372122008/12/26(金) 14:48:00ID:Ag3DX8xC
>>225
すいません。出たエラーはこんな感じです。
Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT
下のようにしたら実現できました。
<?php switch($foo):
case 'a':
?>
<div>a</div>
<?php break; ?>
<?php case 'b': ?>
<div>b</div>
<?php break; ?>
<?php endswitch ?>
気持ち悪いですね。
最初のcase句を別の<?php?>に入れるとエラーが出ます。
う〜ん・・・気持ち悪い。使っていいものか悩みますね。バグでした〜とかいって修正されそうな気も。
0238nobodyさん2008/12/26(金) 14:56:52ID:???
>>236
日本語としては「じっぷん」が正しいが、レッドブックの「とおふん」も間違いではない
ただ朝鮮人や関西人が良く使う「じゅっぷん」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
0239nobodyさん2008/12/26(金) 15:10:36ID:???
>>237
<?php連呼する書き方の方が気持ち悪い
0240nobodyさん2008/12/26(金) 15:11:02ID:???
>>237
俺のデバッグ環境だと普通にできるが・・・

<?php $a = 3; ?>
<?php switch($a): ?>
<?php case 1: ?>
1
<?php break; ?>
<?php case 2: ?>
2
<?php break; ?>
<?php default: ?>
default
<?php endswitch; ?>
0241nobodyさん2008/12/26(金) 15:16:56ID:???
>>235
explodeは、よくてpreg_matchも理解してるんだよね。
あとは状況応じてパターンを変えればいいんでない?
0242nobodyさん2008/12/26(金) 15:21:49ID:???
>>237
switchとcaseの間に改行以外のゴミでも入ってるんじゃね?
0243nobodyさん2008/12/26(金) 15:23:12ID:???
>>239
お前が気持ち悪い RETURNS
0244nobodyさん2008/12/26(金) 15:23:44ID:???
>>243
なんで?
0245nobodyさん2008/12/26(金) 15:24:42ID:???
>>241
日本語で
0246nobodyさん2008/12/26(金) 15:25:20ID:???
あぁテンプレートってこうやって書くのか
いつも
<div><?php if () { echo ""; } else { echo ""; } ?></div>
みたいな感じでやってたわ
0247nobodyさん2008/12/26(金) 15:25:44ID:Mk7Gnz+a
>>241
はい、理解しています。

今回の例であれば、%{hoge}の部分を(.+)にして正規表現を作り、
preg_matchの3番目の引数$matchesを使って、
%{hoge}が1番目なら$data[0]['hoge'] = $matches[1]すれば良いですよね。。。

ただ、もっとこう、sscanf 的な感じで簡単な仕組みで出来たりしないかなぁ、とか
一般的にはどうやっているんだろう的な意味合いも込めて質問させていただきました。
どなたかスマートな方法や、ライブラリがあればご教示ください。
0248nobodyさん2008/12/26(金) 15:27:12ID:???
>>246
それテンプレートじゃねーよ
0249nobodyさん2008/12/26(金) 15:29:06ID:???
>>247
そもそも何でそんなに各行が異なる仕様なの?
0250nobodyさん2008/12/26(金) 15:32:21ID:???
>>247
preg_splitとjoinで書くとかそういう話?スマートって。
0251nobodyさん2008/12/26(金) 15:41:03ID:???
>>247
sscanf使えば?

>>246
smartyは独自タグをああいう形に変更してくれるが
あれは記述方法の1つであってテンプレートではない

0252nobodyさん2008/12/26(金) 15:41:21ID:i1+5wuDM
mysqli の close系関数は明示的に呼び出したほうが良いのでしょうか。
0253nobodyさん2008/12/26(金) 15:42:03ID:???
>>252
いらん
02542342008/12/26(金) 15:43:41ID:???
>>249
あ、すみません、すこし私の文章の字掛かりが悪かったですね。
取り出す単位が行毎というだけで、行毎にフォーマットが違う訳ではないです。
というか、そもそも行とかそういう説明がいらないですね、ごめんなさい。
あくまで1文字列集団に対して指定のフォーマットで取り出したいだけの質問です。

>>250
スマートって定義が曖昧ですね、申し訳ない。
そんな汎用ライブラリ無いですか、と受け取って下さい。
自分でコードを書きたくないのです。怠惰です。開き直りです。。。
02552522008/12/26(金) 15:46:29ID:i1+5wuDM
>>253
ありがとうございます。
ご意見を伺いたいのですが、20件〜30件程度のデータをSQLから引き出して、<select>をループで
生成するというのはやはり、負荷がかかってしまいますか?
(<select>は複数あるとします)。
データが変わるたびに、対応してHTML部分も書き換えるのが面倒なので考えたのですが……。
0256nobodyさん2008/12/26(金) 15:47:41ID:???
>>254
>あくまで1文字列集団に対して指定のフォーマットで取り出したいだけの質問です。
だったらsscanfでいいじゃん。
連想配列に入れたいなら自分でsscanf使ってパーサー作る感じで
>>255
全然かからない
02572522008/12/26(金) 15:51:16ID:i1+5wuDM
>>256
ありがとうございました。
0258nobodyさん2008/12/26(金) 16:25:35ID:nmEdMuVH
phpのある関数がどのように実装されているのか中身を見たいのですが
何か方法はありますか?
またphpの標準関数はphp以外の言語で実装されているのでしょうか?
return値が異なる関数が(成功したらintやStringを返し失敗したらbool(false)を返すなど)
いくつかあるので中身がどのように実装されてるのか知りたいです
■ このスレッドは過去ログ倉庫に格納されています