• 締切済み

配列の値

$callback = $wp_registered_widgets[$id]['callback']; 配列 $callbackを展開すると以下のようになります。 Array ( [0] => WP_Widget_Pages Object ( [id_base] => pages [name] => 固定ページ [widget_options] => Array ( [classname] => widget_pages [description] => サイト内の固定ページ ) [control_options] => Array ( [id_base] => pages ) [number] => 3 [id] => pages-3 [updated] => [option_name] => widget_pages ) [1] => display_callback ) ここで、[name]の値だけ引き出したいですが・・・うまくいきません。 $callback[0]['name']; どうかご教授よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

たとえばこんな感じ? <?PHP $hoge[0]=new fuga; class fuga{ var $name=1; } print_r($hoge); print $hoge[0]->name; ?>

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

$callback[0]は配列じゃなくてObject。 Objectを使う以上は理解されていると思いますが、Objectのプロパティへのアクセスは['name']ではありません。

giuxon
質問者

補足

shimix様 ありがとうございます。 ならば、name 値だけ出力させたいですが、どうすればいいでしょうか?

関連するQ&A

  • PHPの解読しているのですが、Textを入力して…

    どこに行くのかがわかりません(涙 自分の持てる知識を全力使い、フル回転で探しているのですが、入力した文字がどこに行くのかが分からず苦戦しています。 ソースを辿って文字を入力しているページは分かったのですが、そこからが知識が足りなく断念しています…。 どなたか詳しい方いらっしゃいましたらご回答お願いします。 問題のソース <div class="widget-liquid-right"> <div id="widgets-right"> <?php $i = 0; foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) { if ( false !== strpos( $registered_sidebar['class'], 'inactive-sidebar' ) || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) ) continue; $wrap_class = 'widgets-holder-wrap'; if ( !empty( $registered_sidebar['class'] ) ) $wrap_class .= ' sidebar-' . $registered_sidebar['class']; if ( $i ) $wrap_class .= ' closed'; ?> <div class="<?php echo esc_attr( $wrap_class ); ?>"> <div class="sidebar-name"> <div class="sidebar-name-arrow"><br /></div> <h3><?php echo esc_html( $registered_sidebar['name'] ); ?> <span class="spinner"></span></h3></div> <?php wp_list_widget_controls( $sidebar ); // Show the control forms for each of the widgets in this sidebar ?> </div> <?php $i++; } ?> </div> </div> <form action="" method="post"> <?php wp_nonce_field( 'save-sidebar-widgets', '_wpnonce_widgets', false ); ?> </form> <br class="clear" /> </div>

    • 締切済み
    • PHP
  • チェックボックスでチェックした配列の値をDBに。

    チェックボックスでチェックした配列の値を データベースのカラム名と照らし合わせて 一致する所に「1」を入れたいのですが、うまくいきません。 PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 どうしたら、入れることができるでしょうか? ご教授、よろしくお願いいたします。 1 送るページ $sql = "select * from `class_tbl`"; $rest = mysql_query($sql, $con); while($col = mysql_fetch_array($rest)) { $classID = $col["classID"]; $class_name = $col["class_name"]; $sql = "select * from `member_sub_tbl` where `ID` ='$ID'"; $rst = mysql_query($sql, $con); while($col = mysql_fetch_array($rst)) { $kekka = $col["$classID"]; if($kekka==1) { echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" checked/> $class_name EOF; } else{ echo <<<EOF <input type="checkbox" name="classID[]" value="$classID" /> $class_name EOF; } } } echo <<<EOF <input name="ID" type="hidden" value="$ID" /> EOF; 2 受けるページ $ID=$POST["ID"]; $classID=$POST["classID"]; var_dump($_REQUEST); 以下のように表示しています。 array(3) { ["classID"]=> array(10) { [0]=> string(4) "1010" [1]=> string(4) "1050" [2]=> string(4) "1110" [3]=> string(4) "1182" } ["sn"]=> string(2) "45" ["PHPSESSID"]=> string(32) "********************" } 「ID」の行に、配列の「1010」「1050」と 「member_sub_tbl(テーブル)」の「カラム名」を比較して、一致する所に「1」を入れたいのですがうまくいきません。 ※update をしたいのです。 試行錯誤していますが、方法が分かりません。 ご教授、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ★PHP★オブジェクトの並び替えを教えてください

    下記の[ss_category] の並びはそのままで、 [item] [0][1][2]のデータの並び替えの方法を教えてください。 ([2]のデータを一番上にしたいということです。) ご存知の方がおりましたらよろしくお願いします。 SimpleXMLElement Object ( [id] => 0.228142001317192226 [name] => aaa [ss_category] => Array ( [0] => SimpleXMLElement Object ( [id] => 0.697361001317192236 [name] => aaawww [description] => SimpleXMLElement Object ( ) [item] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => ええ ) [id] => 0.192165001317265048 [name] => ええ1 [description] => ええ1 [applyer] => ええ1 [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317281103 [time_stamp] => 1317222000 [attach_file] => 0.192165001317265048 [attach_filename] => sql.txt ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => あああ ) [id] => 0.123983001317265270 [name] => あああ1 [description] => ああ1 [applyer] => ああ1 [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317265632 [time_stamp] => 1317222000 [attach_file] => 0.123983001317265270 [attach_filename] => idm780.zip ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => www ) [id] => 0.955786001317265700 [name] => www [description] => www [applyer] => www [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317265700 [time_stamp] => 1317222000 [attach_file] => 0.955786001317265700 [attach_filename] => idm780.zip ) ) ) [1] => SimpleXMLElement Object ( [id] => 0.706559001317265020 [name] => ああ [description] => ああ ) ) )

    • ベストアンサー
    • PHP
  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

  • valueの値について教えてください!

    前提として疑問なのですがname属性の値を日本語にすると古いブラウザで 文字化けするなど環境により問題があるようなので英語にするのが無難と 言われておりますよね。 なんとなくそれは納得できるのですがセレクトボックスやラジオボタンの valueはなぜ英語または数字で指定されていることが多いのでしょうか? 初心者なものでまずは一度試してみようと思い英語でセレクトボックスのvalueを指定し 入力ページに以下のように配列を用意し(実際には47都道府県) $area_array = array(1 => '東京', 2 => '神奈川', 3 => '千葉'); foreach ($area_array as $key => $val) { echo "<option value=\"" . $key ."\">" . $val . "</option>\n"; } とすると <option value="1">東京</option> <option value="2">神奈川</option> <option value="3">千葉</option> となるのですがvalueが数字なのでこの状態で次の確認ページに進むと 何を選んだのかわかりません。 確認ページに if ($_SESSION['area'] == '1') { $_SESSION['area'] = '東京'; } と記述すればいいのですが47件もあるのでもっと簡略化 できないものかと思い調べてみたのですが有力な情報がみつからず質問 させて頂きました。 valueを日本語にすればそのままなので問題ないのですが英数字での場合 どのようにすれば実現できるのかを教えて頂きたいと思っております。 詳しい方おりましたら宜しくお願い致します。

    • ベストアンサー
    • PHP
  • wordpressのdescription設定

    wordpress、phpの初心者です。 SEO対策のために、descriptionを全ページ、コンテンツに適したもので出力できればと思い、 ・トップページは一般設定の「キャッチフレーズ」 ・カテゴリーページは「カテゴリーの説明文」 ・投稿ページは「カスタムフィールド」 ・それ以外、及びカスタムフィールドが入力されていない投稿ページは「ページタイトル | 一般設定のキャッチフレーズ」 上記の用に出力できるよう、ググって色んなサイトを参考に下記のように記述したのですが、 真っ白になって表示されません。 <?php if (is_home()) { echo '<meta name="description" content="<?php bloginfo('description'); ?>" />'; } elseif (is_category()) { echo '<meta name="description" content="<?php echo category_description(); ?>" />'; } elseif(is_single()){ echo '<meta name="description" content="<?php echo get_post_meta($post->ID,'description',true);?>" />'; } else { echo '<meta name="description" content="<?php wp_title('|', true, 'right'); bloginfo('description'); ?>" />'; }?> プラグインもイマイチ希望のものが見つからず、 何とか試行錯誤しているのですが、未だに解決出来ずにいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 2段プルダウンの値の保持について(html)

    2段プルダウンの値の保持について(html) お世話になっております。 WEBページにてエントリーフォームを作成しております。 base.html(エントリー画面) base_ck.php(確認画面) Aプルダウン(都道府県) Bプルダウン(所属名) MySQLよりPHPで先にBプルダウンの値を計算しておきます。 Aプルダウンを選択したのち、Aのvalue値をキーとしてBプルダウンの値を計算(javascript)しております。 ここまでは問題ないのですが、確認画面から戻る(submit)と、Bプルダウンの値が消えて選択もできなくなります。 今までは運用でごまかしておりましたが(Aプルダウンで一旦違う値を選択し再度選びなおすとBプルダウンが復活する)、 クライアントより修正依頼がきてしまいました。 PHP・HTMLは何とか書けるのですが、JavaScriptはど素人で、このプログラムもネットから情報を拾い集めて何とかできました。 ご教授いただければ幸いです。 サンプルコードは以下となります。 「base.html(エントリー画面)」 <html lang="ja"> <head> <title>テストページ</title> <script type="text/javascript"> <!-- データベースよりJavaScriptにて「所属名」を配列に格納する belong_value = new Array(); belong_text = new Array(); belong_length = new Array(); <?php   //ここでBプルダウンの値を計算して配列に格納する。   //データサンプル //belong_value[11] = new Array("0","1001","1002");   //belong_length[11] = 3; //belong_text[11] = new Array("---","北海道","北海道倶楽部","札幌クラブ"); ?> function BelongList(idx){ //選択リストに項目を追加 for(i=0;i<belong_length[idx];i++){ document.form_kojin.belong.length=belong_length[idx]; document.form_kojin.belong.options[i].text = belong_text[idx][i]; document.form_kojin.belong.options[i].value= belong_value[idx][i]; } //選択リストがブランクの場合 if(i==0){ document.form_kojin.belong.length=1; document.form_kojin.belong.options[i].text = "---"; document.form_kojin.belong.options[i].value= 0; } } //--> </script> </head> <body> <div id="wrapper"> <div id="main"> <h1>申込ページ</h1><br /> <?php $action_ck = "https://aaa/base_ck.php"; ?> <h2></h2> <div class="main-frame"> <p><span class="style-indispensable">※必須項目</span></p><br /> <form name="form_kojin" action="<?php echo htmlspecialchars($action_ck, ENT_QUOTES); ?>" method="post"> <table> <tr> <th class="th-style"> <div><span class="style-indispensable">※</span>都道府県</div> </th> <td class="td-style"> <SELECT autofocus size="1" name="branch_name" id="branch_name" onChange="BelongList(this.options[selectedIndex].value);"> <OPTION value="0">---</OPTION> <OPTION value="11">北海道</OPTION> <OPTION value="21">青森県</OPTION> <OPTION value="22">岩手県</OPTION> </SELECT> </td> </tr> <tr> <th class="th-style"> <div><span class="style-indispensable">※</span>所属名</div> </th> <td class="td-style"> <SELECT size="1" name="belong" id="belong"><!-- BelongList関数より自動生成 --> <OPTION value="0">---</OPTION> </SELECT> </td> </tr> </table> <br /><br /> <div> <input name="submit" type="submit" value=" 入力確認画面へ " class="button-05"> </div> </form> </div> </div> </div> </body> </html>

  • 【PHP】配列の値が上書きされる

    PHP初心者です。 PHPとMYSQLとHTMLでweb画面を作成しています。 ループで、SQLを複数回回し、その結果を配列に格納しようとしているのですが、 配列には毎回最後の一つの結果しか格納されません。 いろいろ調べて、試してみたのですが、どうしても分かりません。 申し訳ありませんが、お分かりの方がいたら、ご教示願えませんでしょうか。 以下にソースを記載します。 ******************************************************** <?php $checkbox = $_REQUEST["chk"]; $pdo = new PDO("mysql:host=localhost; dbname=TESTDB; charset=utf8", "hoge", "hoge", array( PDO::ATTR_EMULATE_PREPARES => false ) ); $results=array(); for($i=0; $i<sizeof($checkbox); $i++){ $sql = "select * from Item where 1 = 1 "; $sql = $sql . " and id=${checkbox[$i]} "; $statement = $pdo->prepare( $sql ); var_dump($sql);   ←★デバッグ用 $statement->execute(); $results = $statement->fetchAll(); } ?> <?php print count(sizeof($checkbox));   ←★デバッグ用 print("<pre>");   ←★デバッグ用 print_r($results);   ←★デバッグ用 print("</pre>");   ←★デバッグ用 ?> ******************************************************** $checkbox = $_REQUEST["chk"]; の部分ですが、前のページでチェックボックスに3箇所チェックを入れて、その情報を格納しています。 var_dump($sql)の結果、 string(41) "select * from Item where 1 = 1 and id=8 " string(41) "select * from Item where 1 = 1 and id=9 " string(42) "select * from Item where 1 = 1 and id=10 " と、ちゃんと3つ認識しています。 しかし、 print("<pre>"); print_r($results); print("</pre>"); の結果が、 Array ( [0] => Array ( [id] => 10 [0] => 10 [item_name] =>商品1 [1] => 商品1 [price] => 10000 [2] => 10000 [rfu1] => [3] => [rfu2] => [4] => [rfu3] => [5] => [memo] => comment [6] => comment ) ) と、最後の1つしか格納されていないのです……。

    • ベストアンサー
    • PHP
  • セレクトボックスの値を保持したい。

    お世話になります。 カスタムフィールドで設定した値を取り込み、セレクトで選択出来るようにしています。 ページ遷移後に選択した値を保持した状態にしたいのですが、手法が分かりません。 <?php $my_tax = 'area'; $parent_terms = get_terms( $my_tax, array('hide_empty' => false, 'parent' => 0) ); ?> <select name="area"> <option value="">エリア</option> <?php for($i = 0; $i < count($parent_terms); $i++){ ?> <?php $term = $parent_terms[$i]; ?> <option value="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></option> <?php } ?> </select> こちらをどう変更したら宜しいでしょうか?

    • 締切済み
    • PHP
  • PHP5でxml文書をパースする方法

    <?xml version="1.0"?> <root> <items>  <item>   <id>1</id>   <name>商品(赤)</name>   <price>1500</price>   <color>red</color>   <size>8</size>   <option>A</option>  </item>  <item>   <id>2</id>   <name>商品(青)</name>   <price>700</price>   <color>blue</color>   <size>3</size>  </item>  <item>   <id>3</id>   <name>商品(緑)</name>   <price>1200</price>   <color>green</color>   <size>5</size>   <option>C</option>  </item> </items> </root> 上記のようなXMLデータをPHPでパースし、 1つずつ、配列に入れていきたいと考えていますが、 問題なのは、 上から2番目の商品(青)には、<option>データが無いということです。 これは、この<option>が、オプションが有る時にだけ存在するタグだからです。 //----------------------------- <?php $doc->load($url); //上記xmlデータのあるURL:$url $array = array(); $i = 1; while($i <= 3){  //実際には、もっと商品数はあります。ここでは例として、3。  //配列の初期化  $item_array = array();  $items = $doc->getElementsByTagName('id');  $item_array['id'] = $items->item($i)->nodeValue;  $items = $doc->getElementsByTagName('name');  $item_array['name'] = $items->item($i)->nodeValue;  //*  //*同様のコードが続く  //*  $items = $doc->getElementsByTagName('option');  $item_array['option'] = $items->item($i)->nodeValue;  //*  //*同様のコードが続く  //*  //商品データが詰まった配列を、さらに配列に入れる  $array[] = $item_array; } //全ての商品のデータが詰まった配列を表示する。 print_r($array); ?> //----------------------------- このようなことがしたいわけです。 なお、タグ名を$tag_array = array('id','name',,,,,'option',,,)として、 foreach($tag_array as $tag){  $items = $doc->getElementsByTagName($tag);  $item_array[$tag] = $items->item($i)->nodeValue; } という風にした方が冗長ではないかとは思いますが、 それは、まぁ横に置いておきまして、 このコードで問題なのは、<option>が途中、つまり2番目で抜けると、 3番目の<option>データが、2番目の商品の<option>データとして配列に入ってしまうことです。 上から順に詰めて、配列に格納されてしまい、困っている、ということです。 <option>データが無い場合は、「ナシ」とでもしておきたいのですが、 どうしたら良いでしょうか? <item>を1つずつ   $items = $doc->getElementsByTagName('item'); で取得して、 各<item>の中の、<option>にアクセスする、なんて方法があるとベストなのですが、 そんな方法はありますでしょうか? firstChildですと、<item>の場合、<id>になってしまうため、<option>にはアクセスできません。 firstChild以降のChildには、どうやってアクセスしたら良いのでしょうね? どなたか、宜しくお願い致します。

    • ベストアンサー
    • PHP