arrayについての質問です。 - PHPプロ!Q&A掲示板

4968

  • 0P

arrayについての質問です。

質問日時 / 2018年8月13日 10:11    回答数 / 4件

Questioner:  kesuikeutosa  このエントリーをはてなブックマークに追加 

キーワード / array    in_array    in_array_field   

PHPマニュアルからそのまま抜粋した式ですが、
この式がエラーになる理由がわかりません。


<?php 
$arr = array( new stdClass(), new stdClass() ); 
$arr[0]->colour = 'red'; 
$arr[1]->colour = 'green'; 
$arr[1]->state  = 'enabled'; 

if (in_array_field('red', 'colour', $arr)) 
   echo 'Item exists with colour red.'; 
if (in_array_field('magenta', 'colour', $arr)) 
   echo 'Item exists with colour magenta.'; 
if (in_array_field('enabled', 'state', $arr)) 
   echo 'Item exists with enabled state.'; 
?> 

Output: 
-------- 
Item exists with colour red. 
Item exists with enabled state. 


それと、この式に代わる他の式があれば教えてほしいです。

私としては、
$arr[0]->colour = 'red','blue','yellow';
$arr[1]->colour = 'green','white' ; 
$arr[1]->state  = 'enabled'; 

このように複数入れた式をつくって、両サイド?を検索したいのです。
よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>if (in_array_field('red', 'colour', $arr)) in
 ┗A01-1kesuikeutosaどのように定義されているかもわかりません。 どの
  ┣A01-1-1shimix>どのように定義されているかもわかりません。 in_
  ┗A01-1-2shimixあぁ、こういう意味ですね https://detail.chiebuk

回答一覧

並び替え:

A01
answerershimix [8月17日 08:22] (最終編集:8月17日 14:16)

>if (in_array_field('red', 'colour', $arr)) 

in_array_fieldとは?どのように定義されていますか?おそらくはユーザ定義関数だと思いますが・・・。

こちらで検証しようにも、表示されるエラーは「Fatal error: Uncaught Error: Call to undefined function in_array_field() 」です(汗

この意見に回答する

ツリーへ TOPへ

A01-1
replyerkesuikeutosa [8月17日 20:58]

どのように定義されているかもわかりません。

どのように定義したら導き出せるのでしょうか?

変な質問ですいません。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [8月18日 01:34]

>どのように定義されているかもわかりません。

in_array_field()はphpの標準関数ではありません。

http://php.net/manual-lookup.php?pattern=in_array_field

なので(一般的には)質問者さんのソースで定義されているハズです。もちろん(このphpスクリプト自体に定義が存在しないなら)includeしている他のファイルで定義されている可能性も高いですが、いずれにしても質問者さんにしかわからない話です。

この意見に回答する

ツリーへ TOPへ

A01-1-2
replyershimix [8月20日 08:53] (最終編集:8月20日 11:39)

あぁ、こういう意味ですね

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13194837623

URLを提示してくれれば一発なのに、何故それを端折るのかが謎すぎます・・・

http://php.net/manual/ja/function.in-array.php

User Contributed Notes の 26番ですね。ちゃんとユーザ定義関数も提示されています(URLを示さないのであれば、これを転記していただければ何の問題もなかったかと)。
  1. <?php
  2. function in_array_field($needle$needle_field$haystack$strict = false) {
  3.     if ($strict) {
  4.         foreach ($haystack as $item)
  5.             if (isset($item->$needle_field) && $item->$needle_field === $needle)
  6.                 return true;
  7.     }
  8.     else {
  9.         foreach ($haystack as $item)
  10.             if (isset($item->$needle_field) && $item->$needle_field == $needle)
  11.                 return true;
  12.     }
  13.     return false;
  14. }
  15. ?>




#結局マルチポストなので、以降は無視します(汗
#こちらで続ける意味もないでしょ

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報