トップページ⇒php
1002コメント311KB

PHP質問・雑談スレ 2【初心者お断り(ROM歓迎)】©5ch.io

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん 転載ダメ©2ch.net2016/10/17(月) 21:44:12.59ID:???
PHP関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
http://echo.2ch.net/tech/ (【PHP】で板内を検索)

前スレ
http://tamae.2ch.net/test/read.cgi/php/1461283091/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
 http://echo.2ch.net/test/read.cgi/tech/1444216746/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0830nobodyさん2017/01/22(日) 19:20:35.19ID:???
だいじょうぶです!
0831nobodyさん2017/01/22(日) 19:53:38.91ID:???
ty!!!!!!
0832nobodyさん2017/01/22(日) 20:00:57.23ID:???
>>829
これどうなってるの?
連想配列は分かるけど、staticなプロパティで$外してもエラー起こらないの?
Myclass::classで何でクラス名が返ってるの?
0833nobodyさん2017/01/22(日) 20:24:38.89ID:???
>>832
http://php.net/manual/ja/language.oop5.basic.php
0834nobodyさん2017/01/22(日) 21:03:16.72ID:???
>>833
ありがとう!
しかもこれclass定義しなくても使えたのね。ビックリ

::class
PHP 5.5 以降では、class キーワードでクラス名の解決ができるようになりました。 ClassName クラスの完全修飾名を文字列で取得するには、 ClassName::class とします。 これは、 名前空間つきのクラスと組み合わせると特に便利です。
0835nobodyさん2017/01/22(日) 23:46:19.23ID:???
ちゃんとテスト書いてね
0836nobodyさん2017/01/23(月) 01:10:26.38ID:???
いやよ
0837nobodyさん2017/01/23(月) 01:58:05.38ID:YCqPaICU
アナルPHPでついて
0838nobodyさん2017/01/23(月) 22:57:06.46ID:???
マニュアルに翻訳ミスがあったけど、報告の仕方がさっぱりわかんないからここに書きますね
だれか修正してちょ


http://php.net/manual/ja/regexp.reference.assertions.php
ここ

> (?<=\d{3}...(?<!999))foo

>は、999 でない 3 桁の数字とさらに 3 文字の後に続く "foo" にマッチするパターンです。

これおかしいなあと思って原文見たけど、やっぱり誤訳だった。

「3桁の数字と、999ではない3文字の後に続く"foo"」が正解ですね。


よろしくお願いしますー
0839nobodyさん2017/01/23(月) 22:59:20.26ID:???
ああ、具体例追記しておきますね

マッチしない例
123999foo
abc123foo

マッチする例
123abcfoo
999abcfoo


こういうことです
よろしくおねがいしますー
0840nobodyさん2017/01/23(月) 23:01:06.80ID:???
あとマニュアル向けのstylishのCSSを修正して
メイン記事のフォントを太くしました
そのほうが見やすいと思ったので。

メイン記事のフォントの種類とトップのヘッダの色も変えられるようになりました
0841nobodyさん2017/01/23(月) 23:44:22.72ID:???
>>838
右上の edit
anonymous login
修正
保存

これぐらいは出来るようになっておいたほうが良いぞ
0842nobodyさん2017/01/24(火) 11:49:49.33ID:???
>>841
ログインはできるんだよ
その先がよくわかんない
0843nobodyさん2017/01/24(火) 11:57:54.39ID:???
ああ、わかった
「すべてのファイル」ってのクリックすりゃいいのね
0844nobodyさん2017/01/24(火) 12:19:47.00ID:???
なんか知らんけど修正不可になってる(他のファイルは修正できる)からやめとく
0845nobodyさん2017/01/24(火) 14:07:46.91ID:???
昔バグ報告したのに英語がめちゃくちゃで理解してもらえなくて今もスルーされている
今そのバグが再現可能かどうかはわからないけど
0846nobodyさん2017/01/24(火) 20:37:54.16ID:???
再現コードが書ければどんだけ英語がおかしくても理解してもらえるはずだけどなぁ
0847nobodyさん2017/01/24(火) 21:50:49.60ID:KZ0F5F3W
何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信

仲間という人間に対する盗聴盗撮生ネット配信の会

しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる

そんなことが今この国では行われています

仄めかしの隠語は
猫 穴 水 仲間 
0848nobodyさん2017/01/25(水) 13:25:36.75ID:???
$array = array(
  array(1,2,3), array(4,5,6), null, array(7,8,9), null,
  array(10,11,12), array(13,14), array(15,16,17), array(18,19,29,2000)
);

これをnullを境にぶった切って始点・終点の目印をつけて
次レスのように変えたい
どうやるのが良いか、先生お願いします

泥臭いけどループごとに1つ前の要素を見て判断させるのが一番なんでしょうか
0849nobodyさん2017/01/25(水) 13:27:52.99ID:???
$result = array(
  array(
    'start'=>true, 'end'=>false,
    'data'=>array(
      array(1,2,3),
      array(4,5,6)
    )
  ),
  array(
    'start'=>false, 'end'=>false,
    'data'=>array(
      array(7,8,9)
    )
  ),
  array(
    'start'=>false, 'end'=>true,
    'data'=>array(
      array(10,11,12),
      array(13,14),
      array(15,16,17),
      array(18,19,29,2000)
    )
  ),
);

わざわざ配列に組み直してるのは、互いに統合できない2つ以上の別々のところで
分割したものをもとに処理したいからです
0850nobodyさん2017/01/25(水) 13:48:15.96ID:???
>>848
>>849が目的じゃなくて手段なら、SplDoublyLinkedListを使うのがいい。
$list = new SplDoublyLinkedList();
$list->push(['abc', 'def']);
$list->push(['ghi']);
$list->push(['jkl', 'mno', 'pqr']);
print_r($list);
0851nobodyさん2017/01/25(水) 13:57:58.30ID:TQsts9Pu
つか、これでいいんじゃねーの?
$result = array(
  array(
    array(1,2,3),
    array(4,5,6)
  ),
  array(
    array(7,8,9)
  ),
  array(
    array(10,11,12),
    array(13,14),
    array(15,16,17),
    array(18,19,29,2000)
  )
);
0852nobodyさん2017/01/25(水) 14:02:31.89ID:???
>>850-851
自分でもアレだとは思うんだけど、元の配列の最初([0])ではじまってる塊か、最後で終わる塊か、
に意味があるので手段じゃなく目的になるます
0853nobodyさん2017/01/25(水) 15:03:00.65ID:???
>>852
ちょっと意味がわからないんだが。

> 自分でもアレだとは思うんだけど、元の配列の最初([0])ではじまってる塊か、最後で終わる塊か、
> に意味があるので手段じゃなく目的になるます

目的=元の配列の最初の塊か最後で終わる塊かを知りたい

じゃないのか?
それを実現する手段が>>849のコードじゃないの?
0854nobodyさん2017/01/25(水) 15:05:21.62ID:???
Aという目的に対してBという手段を考えたのだが、Bに関してCという疑問がある。
Cはどうすればいい?

というようなことだったら、Bじゃなくて別手段がいいんじゃなないのというお話。
0855nobodyさん2017/01/25(水) 15:30:59.78ID:???
>>853
目的は最初に書いたように「nullを境にぶった切って始点・終点の目印をつけ」ることです

852で元の〜〜は手段じゃなく目的だと書いたのは、
始点・終点の目印を省く提案をされた>>850-851の方々に対して、いや必要なんですよ、と返す意図です

始端・終端の把握のためとはいえ、いかにもって感じのフラグ設定はどうかとも思ったのですが、
わかりやすさを優先してフラグ設定として書いてあります
アレだと思う、と書いた意図はこのようなことだったのですが今読み直すと意味不明ですね、すみません
854は申し訳ないけど意味がわかりません
0856nobodyさん2017/01/25(水) 16:17:04.24ID:???
>>848
> 泥臭いけどループごとに1つ前の要素を見て判断させる
というのがどういうコードを想像しているのかわからんけど、foreachで回してnullかどうかでアレコレすればいいだけだろ

くだらん質問する暇があったらコード書け
0857nobodyさん2017/01/25(水) 18:01:04.15ID:???
手段と目的の意味すらわからんとは
0858nobodyさん2017/01/25(水) 18:24:52.58ID:???
目印なくても$result[0]が最初で$result[count($result)-1]が最後でしょ

それはそうとして、$hoge->fuga($array)に3つの塊を渡して、fuga()の中で
$array['start'], $array['end']を参照して処理を振り分けようと思ってるなら
それは筋が悪い
0859nobodyさん2017/01/25(水) 21:45:59.66ID:???
PHPマニュアルのフラットデザインを上げた者ですが
白い背景だと目が疲れるという方もいると思うので
黒背景バージョンも作りました

https://userstyles.org/styles/138132/darker-flat-php-manual-php

拡張機能のStylishを導入している方で、需要があればご利用ください
0860nobodyさん2017/01/25(水) 22:44:31.53ID:???
>>855
> 目的は最初に書いたように「nullを境にぶった切って始点・終点の目印をつけ」ることです
何かをするために目印をつけるんじゃなくて、目印をつけたら終わりってことなのね。
0861nobodyさん2017/01/25(水) 23:39:57.48ID:???
この流れ久々にこれはひどいと思ったわ
0862nobodyさん2017/01/26(木) 00:18:55.89ID:???
explodeの配列版みたいな関数があれば楽なのになって話かね
0863nobodyさん2017/01/26(木) 00:33:38.12ID:???
何の目的に使うか分からんデータ構造を生成したいというなら素直にループ回せばいいのでは
前の要素を参照するとか意味分からんけど, 別にO(n)でもO(n^2)でも構わんのでしょう?

助言としては作るデータ構造はなるべく汎用データ構造かその拡張にしたほうが便利よ, とだけ
0864nobodyさん2017/01/26(木) 01:29:38.46ID:???
ちょっとオレが居ないと、こんなクソ展開になるのかよ…

おまえら、アホだな
0865nobodyさん2017/01/26(木) 01:32:19.82ID:???
そうだお前が頼りだ
0866nobodyさん2017/01/26(木) 02:24:48.81ID:???
>>864 C#erはクソして寝ろよ
0867nobodyさん2017/01/26(木) 12:53:41.57ID:???
こういうコードを書いてみたけど、もっとうまいやり方ある?

って感じにしてくれ、今後は
0868nobodyさん2017/01/26(木) 14:11:35.81ID:UAQktabA
https://youtu.be/quIHgwuF6r4
0869nobodyさん2017/01/28(土) 00:36:58.68ID:???
この手法は何というのですか

(new MyClass)->method()
0870nobodyさん2017/01/28(土) 00:49:13.21ID:???
なんとかケース
0871nobodyさん2017/01/28(土) 10:24:13.32ID:???
カッコマン
0872nobodyさん2017/01/28(土) 11:22:54.14ID:???
ワンライナー
0873nobodyさん2017/01/28(土) 15:44:19.19ID:???
クラスの分割のために継承できないような構造だとしたら、
トレイトとしてメソッド分割してok?
0874nobodyさん2017/01/29(日) 02:48:03.36ID:???
PHPのトレイト使ったことないけど、他言語のそれと同じものならおk。
0875nobodyさん2017/02/01(水) 15:32:36.08ID:???
isset()って 1 とか 'test' とか渡すとsyntax errorで怒られるけど、これ関数じゃない?
0876nobodyさん2017/02/01(水) 16:29:08.11ID:???
if isset($PHPer){echo "関数";}
0877nobodyさん2017/02/01(水) 17:25:46.13ID:???
>>875
言語構造
0878nobodyさん2017/02/01(水) 19:18:55.57ID:???
>>875
マニュアル読む癖をつけたほうがいい

http://php.net/manual/ja/function.isset.php
isset() は何らかの値が渡された 変数の場合のみ動作します。そうでない場合、パースエラーとなります。 もし 定数 が設定されているかどうかをチェックする場合は、 defined() を使用してください。
注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。
注意:オブジェクトのアクセス不能なプロパティに対して isset() を使用した場合は、もしオーバーロードメソッド __isset() が宣言されていればそれをコールします。
0879nobodyさん2017/02/01(水) 19:19:30.82ID:???
phpって関数にしか見えない言語構造が多い気がするけど、
他の言語もそうなの?
0880nobodyさん2017/02/01(水) 19:41:06.22ID:???
function_exists('isset') or die('not a function');
0881nobodyさん2017/02/03(金) 14:28:22.41ID:???
>>877-878
ありがと
マニュアルは目を通したつもりだったんだけど注意のところ見逃してたごめん
可変変数もダメなんだなあ
0882nobodyさん2017/02/03(金) 15:14:11.12ID:BPtags4A
facebookって開発言語なに?
0883nobodyさん2017/02/03(金) 23:04:39.09ID:???
B言語使ってるよ
0884nobodyさん2017/02/03(金) 23:16:47.84ID:???
>>882
PHPに決まってるだろ、言わせんな!
0885nobodyさん2017/02/03(金) 23:22:23.40ID:???
言わせたかったんだ、ごめん
0886nobodyさん2017/02/03(金) 23:30:45.78ID:???
ペチパーが!!
0887nobodyさん2017/02/03(金) 23:39:02.33ID:???
だが少し待って欲しいHHVMはPHPのように見えるPHPのような何かなのではないだろうか
0888nobodyさん2017/02/04(土) 01:31:34.47ID:Rj9LF3nc
>>884
嘘つくんじゃねーよ。沖縄県民
0889nobodyさん2017/02/04(土) 01:34:05.86ID:???
なんで沖縄なんだよ
0890nobodyさん2017/02/04(土) 08:46:43.40ID:???
>>889
日本人が一番嫌がるレッテル貼りは「南朝鮮人」もしくは「在日」。しかしあまりに使いすぎたので効果が薄れてきた
最近基地問題で流行りの「沖縄人」を使ってみたが、リゾート地、朝鮮人の市民団体、中国人の市民団体とイメージが広すぎる

結論を言うと、煽りやレッテル貼りとしては失敗。もう少しイメージが絞られたものにするべき
そういう意味では「南朝鮮人」に勝るものはないと言えるだろう
0891nobodyさん2017/02/04(土) 09:47:53.23ID:???
うわー、ネトウヨこっちくんなよ・・・
0892nobodyさん2017/02/04(土) 11:49:01.40ID:QsE+sxbw
https://www.youtube.com/watch?v=quIHgwuF6r4&;sns=em
0893nobodyさん2017/02/04(土) 21:14:54.28ID:???
[1,2,3,4]
[2,1,4,3]

上のような配列順序がバラバラでもtrueを返したいのですが、どのような比較方法があるでしょう
0894nobodyさん2017/02/04(土) 21:21:25.15ID:???
array_diff()
0895nobodyさん2017/02/04(土) 21:26:02.13ID:???
業務アプリばっかつくっててDBばっか使ってるとPHPの配列用関数なんか全く覚えないから
>>894 みたいな回答がすらっとでてくるのは脅威
0896nobodyさん2017/02/04(土) 21:57:52.05ID:Rj9LF3nc
>>893
みたいな意味不明な質問が出る事がゆとり教育の弊害
0897nobodyさん2017/02/04(土) 23:42:29.34ID:???
まあ確かに意味不明は一理なくもない
0898nobodyさん2017/02/04(土) 23:49:40.69ID:???
意味の推定は可能だが日本語としては意味を成していない
0899nobodyさん2017/02/05(日) 00:14:30.88ID:jA2houVQ
893みたいなやつとは一緒に仕事したくない。
間違いなく、コミュニケーション能力の低さ故に仕様確認で喧嘩になりそう。


なんでプログラマって言語障害者が多いのかな?
0900nobodyさん2017/02/05(日) 00:17:57.77ID:???
phpのテストメソッドの命名で

・testUnkoMan(接頭辞にtestでキャメル)
・it_unko_man(接頭辞にitでスネーク)

どっちの形式が良いか悩ましいんだけど、ベストプラクティスみたいなの書いてる記事ないかね
0901nobodyさん2017/02/05(日) 00:20:38.51ID:???
>>900
いい年して小学生みたいな命名やめた方が良い
0902nobodyさん2017/02/05(日) 00:20:44.15ID:jA2houVQ
うんこ男をテストしてどうするんだばーか。
0903nobodyさん2017/02/05(日) 00:22:01.70ID:???
>>902
ageガイジは黙ってろ氏ね
0904nobodyさん2017/02/05(日) 00:26:24.71ID:???
>>900
TDDなら上, BDDなら下
0905nobodyさん2017/02/05(日) 08:44:02.70ID:yhK5jENS
PHPと関係ないんですが、、パーミッションについて質問があります
共有レンタルサーバー サクラを契約しています
デフォルトで、下記の内容でパーミッションが割り振りされています。

705: /home/username/

そこで、サイトを公開するにあたって、ドメイン名ディレクトリを作る必要があります。
/home/username/www/ドメイン名/

このドメイン名のディレクトリのパーティションを 777 に変更しました

そこで質問なのですが
同じサーバー内の他のユーザが、このドメイン名のディレクトリにアクセスできちゃう なんてことはありますか?
自分の認識では /home/username/ の段階で弾かれると思っています この認識で大丈夫でしょうか。

また ドメイン名ディレクトリを 777 にすることで何かセキュリティ的にまずいことはありますか?
0906nobodyさん2017/02/05(日) 09:43:44.06ID:JQZvwDcv
905 すいません、解決しました。ありがとうございました。
0907nobodyさん2017/02/05(日) 11:16:50.78ID:???
なぜPHPと関係ないと分かっていて投下したのか
0908nobodyさん2017/02/05(日) 11:30:51.61ID:jA2houVQ
マルチだから
0909nobodyさん2017/02/05(日) 20:53:05.34ID:???
>>896 >>899みたいなキレやすくて理解力ないやつもいらねえ
IQ低いのに偉そうじゃん
俺はパッと見て何言ってるかわかったし>>894もわかったし・・・
0910nobodyさん2017/02/05(日) 20:55:08.48ID:???
PHPマニュアルを見ろとは言わないけど、文字列の操作(最低でもtrimとstrが頭につくもの)と
配列の操作の関数だけは最初で暗記しようね
0911nobodyさん2017/02/05(日) 21:01:50.63ID:???
phpマニュアル、詳しいのはいいんだけど重要度を書いてほしいな
似たような関数があったり、使わなくていいものとか多くて困る
0912nobodyさん2017/02/05(日) 21:53:01.64ID:???
いやphpマニュアルを見ろと言うべきだろう
暗記しないでもいい、必要なときに必要なビルトイン関数があるか調べればいいだけ
どうせよく使う関数は自然と覚える
0913nobodyさん2017/02/05(日) 22:01:19.05ID:???
他の関数でも出来る
関数を組み合わせれば出来る

もっとベターな方法があるなんてのは
知らないから使わなかっただけなんだから気にすんな
0914nobodyさん2017/02/05(日) 22:21:39.40ID:???
マニュアル読んでおいた方が結果的に早いんだが、なぜか初心者は頑なに読もうとしないんだよな
0915nobodyさん2017/02/05(日) 22:53:03.52ID:???
>>893の2値が外から受けとる変数で、数が同じでないならば、
array_diffの1番目の引数は数が多い方にしないと、正確な結果がとれないからそこだけ注意。
数多くなければsortしてそれ比較するのも直感的にわかりやすくてありだと思う。
片方の配列の値を1個ずつもう片方の配列にarray_searchかけるなんて手法もある。
最悪計算量はsortするのと同じぐらいだけど1週目でfalse判定も可能。
0916nobodyさん2017/02/05(日) 22:58:04.19ID:???
ID出して煽るやつ=ただただ頭の悪いC#erのキチガイ
読点はつけるのに句点はつけないやつ=盛り上げてると思ってる自演キチガイ
0917nobodyさん2017/02/05(日) 23:07:55.89ID:???
他のやつはどうでもいいけど、>>916 おまえだけは黙ってろ
0918nobodyさん2017/02/05(日) 23:10:04.98ID:???
おっと自演キチガイがお怒りだwwwwww
>>911-912
皆の者この恥ずかしいやり取りをみよwwww
0919nobodyさん2017/02/05(日) 23:11:19.94ID:???
なぜC#であってCでないのだろう
0920nobodyさん2017/02/05(日) 23:12:07.69ID:???
そりゃ>>764で自己紹介してるからよ
0921nobodyさん2017/02/05(日) 23:15:10.57ID:???
C#便利だからね
なんでもサクッと作れて良い
0922nobodyさん2017/02/05(日) 23:20:02.68ID:???
VSにGUIエディタがあるからね
JavaSsciptかじってればWindowsアプリなんか楽勝だし
Webアプリしか出来ないとか言ってるお前らにも作れるよ
0923nobodyさん2017/02/05(日) 23:21:11.24ID:???
>>918
キチガイはおまえだよ、ゴミクズは黙ってろ
0924nobodyさん2017/02/05(日) 23:25:12.65ID:???
>>923
自演してごめんなさいって言えば丸く収まったのになwwwww
>>864痛すぎるぞお前wwwwww
0925nobodyさん2017/02/05(日) 23:41:23.04ID:???
>>924
キチガイは黙ってろ
0926nobodyさん2017/02/05(日) 23:49:29.62ID:???
盛り上げてやってるならもっと面白い返ししてみろよwwww
融通がきかず口数少ないコミュ障の典型的なプログラムオタクだなお前wwww
もう寝るしまた遊びに来てやるからせいぜい自演しとけやwwwwww
0927nobodyさん2017/02/06(月) 00:01:31.34ID:sbN7DgFT
>>926
マジキチは黙ってろ
0928nobodyさん2017/02/06(月) 00:41:32.55ID:fRp1AG0N
>>916
真正キチガイのお前がいっても説得力ないよ。
0929nobodyさん2017/02/06(月) 11:23:10.10ID:???
PHPマニュアルで、ナビバーの下にあるリンクで「前のページ」と「次のページ」を
キーボードショートカットで移動できる拡張機能作ったけど需要ありますかね
上のリンクだけじゃなくて、サイドバーのメニューにも移動できて、
下へ辿っていくこともできます
金が無いのでストアじゃなくgoogle driveでの自主配布になるんですが・・・
(ただ自主配布の信用できない拡張機能はセキュリティ上問題があることが多く・・・)
レス数が900を超えています。1000を超えると表示できなくなるよ。