• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP array関数の[ ]内の値の表示)

PHP array関数の[ ]内の値の表示方法と空きカラムの抽出

このQ&Aのポイント
  • PHPのarray関数を使って[ ]内の値を表示する方法についてご質問いただきました。
  • また、指定したカラムが空の場合に、そのカラム番号を抽出する方法についてもお伺いしました。
  • 既存のコードでは、ワイルドカードを使ったlike検索のような形を試みましたが、うまくいかないとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

>> 数値が入っているものと入っていないもの(NULL) >> af3 ='' >> af5 ='' NULL値 と 空文字 "" は当然異なるものです。 下記でもこれについて言及します。 Yune-Kichiさんの回答に補足します。 コールバック関数の function ($i) { return is_null($i); } について。 私のものは function ($i) { return !$i; } でしたが、これとは判定基準が異なります。 PHPのisset,empty,is_null http://d.hatena.ne.jp/sngmr/20080209/1202520832 is_null($i) は「NULL」のみ、 !$i は「NULL」「FALSE」「0」「0.0」「"0"」「array()」 を対象とします。 空きカラムをあなたがどのように管理しているかによって、どちらを採用すべきかが異なってきます。 自分で「空きカラム」とするときにNULLを代入しているのであれば、前者の方法でいいでしょう。 どちらかといえば関数を呼ばずに function ($i) { return $i === null; } と書いた方がパフォーマンスはいいですが、お好きな方で。 そうではなくて単に空文字列 "" としている場合は、私の function ($i) { return !$i; } を採用してください。但し、上で述べたように文字列の「"0"」も空と見なされてしまうので、純粋に0文字の場合のみとしたい場合は function ($i) { return $i === ''; } とでもしてください。 ----------------------------------------------- 個人的にはそもそも、データをフェッチしてくる段階で空きカラムのみを取得すべきだとは思いますが。 SQL文でNULL(または空文字)の場合のみを取得するように書くべきです。

tajix14
質問者

補足

To_aru_User様 >SQL文でNULL(または空文字)の場合のみを取得するように書くべきです。 大変貴重なご指導、有難うございます。 確かに、それがスマートです。 もともとの質問とはずれてしまいましたが、下記のSQLで当方が必要とする情報を得ることが出来ました。 SQLは少し冗長な気もしますが、PHPで取得するよりはるかに軽い形で情報を取得することが出来るようになります!! 貴重なアドバイスに御礼申し上げます。本当にありがとうございました。 もし、もっと軽い形のSQLの書き方があればご指導いただければ幸いですが、ご多忙であれば無視頂いてかまいません。 前回の質問から引き続きご指導頂いたことに心から感謝いたします。 SELECT IF( af1 >1, IF( af2 >1,IF( af3 >1,IF( af4 >1, IF( af5 >1, IF( af6 >1, IF( af7 >1, IF( af8 >1, IF( af9 >1,IF( af10 >1, '0', 'af10' ) , 'af9' ) , 'af8' ) , 'af7' ) , 'af6' ) , 'af5' ) , 'af4' ) , 'af3' ) , 'af2' ) , 'af1' ) FROM af_friend WHERE af_userId = 'id_no_1234'

その他の回答 (1)

回答No.1

$num = array_keys($empty)[0]; でしょうか。 お試しコード <?php $a = array ( 1 => '10', 2 => '15', 3 => null, 4 => '20', 5 => null ); var_dump($a); $b = array_filter($a, function ($i) { return is_null($i); }); var_dump($b); var_dump(array_keys($b)[0]); 結果 (PHP 5.4.15 (cli) on Windows 8) array(5) { [1]=> string(2) "10" [2]=> string(2) "15" [3]=> NULL [4]=> string(2) "20" [5]=> NULL } array(2) { [3]=> NULL [5]=> NULL } int(3)

tajix14
質問者

補足

コードまで記載頂きましたご指導、本当に有難うございます。 ただ、当方のPHP Apache/2.2.15 (CentOS6.4) PHP5.3.3 では、なぜかエラーになってしまいます。 勉強のためもう少しトライしてみます。まずは御礼まで。本当に有難うございました。

関連するQ&A

専門家に質問してみよう