• 締切済み

Array Array と表示される

11spec0の回答

  • 11spec0
  • ベストアンサー率83% (10/12)
回答No.8

なるほど。結局のところ、先ほど教えていただいた配列の商品内容をアサインしたいわけですよね。 ということは、pagerで生成された配列をただアサインしても分解してアサインしていないので、 当たり前ですが、表示上は Arrayになります。また、いままで個別に突っ込んでアサインしていた $smarty->assign('is_null_cell', 0); $smarty->assign('title', $items[$ctr]['itemName']); $smarty->assign('item_code', $items[$ctr]['itemCode']); $smarty->assign('price', $items[$ctr]['itemPrice']); $smarty->assign('description', $items[$ctr]['itemCaption']); $smarty->assign('link', $items[$ctr]['itemUrl']); $smarty->assign('affiliate_link', $items[$ctr]['affiliateUrl']); $smarty->assign('is_image', $items[$ctr]['imageFlag']); $smarty->assign('small_image_url', $items[$ctr]['smallImageUrl']); $smarty->assign('medium_image_url', $items[$ctr]['mediumImageUrl']); $smarty->assign('is_available', $items[$ctr]['availability']); $smarty->assign('is_include_tax', $items[$ctr]['taxFlag']); $smarty->assign('is_include_postage', !$items[$ctr]['postageFlag']); $smarty->assign('is_credit_card', $items[$ctr]['creditCardFlag']); $smarty->assign('is_shop_of_the_year', $items[$ctr]['shopOfTheYearFlag']); $smarty->assign('affiliate_rate', $items[$ctr]['affiliateRate']); ・・・続く の部分は不要になります。なぜかといいますと、pagerによって生成された商品データ(配列)が 既にありますので。この生成されたデータを分解アサインし、表示部分を作っていきます。 まず、 $page = Pager::factory($params); $pdata = $page->getPageData(); $plink = $page->getLinks(); で生成された実データ$pdataをアサインします。 tpl側 {*<!--▼pager parts-->*} <div align="center">{$plink}</div> {*<!--▲pager parts-->*} {*<!--▼body-->*} {foreach name=test item=test from=$tests} <p style="text-align : center; overflow : hidden;"> {if $is_image}<a href="{$test.affiliate_link}" target="_blank"><img src="{$test.medium_image_url}" alt="{$test.title|mb_truncate:100:" ..."}" style="border : 1px solid #999999;" /></a><br />{/if} <a href="{$test.affiliate_link}" target="_blank">{$test.title|mb_truncate:100:" ..."}</a><br /> {$test.price|number_format}円<br /> (<a href="{$test.shop_affiliate_link}" target="_blank">{$test.shop_name|mb_truncate:100:" ..."}</a>) </p> {/foreach} {*<!--▲body-->*} {*<!--▼pager parts-->*} <div align="center">{$plink}</div> {*<!--▲pager parts-->*} php側 #アサイン部分 $smarty->assign('tests',$pdata); $smarty->assign('plink',$plink[0]['all']); これだけでpagerは実装できます。コメントとして書いておいたbody部分の$test.要素名は調整 しつつ動きを見てください。

jimmy1977
質問者

お礼

おはようございます。本当にいろいろとありがとうございます。11spec0様の言われた事を私の解釈があっているのか不安なので、ご指導お願い致します。 「いままで個別に突っ込んでアサインしていた部分は不要になります」ということは下記のものはいらなくなるといううことで良いでしょうか。 $params = array( 'perPage' => $max, 'itemData' => $data ); 上記部分が無くした状態で、PHP側は $page = Pager::factory($params); $pdata = $page->getPageData(); $plink = $page->getLinks(); $smarty->assign('tests',$pdata); $smarty->assign('plink',$plink[0]['all']); を転記するだけでよいのでしょうか。また転記する場所は決まりがあるのでしょうか。 tpl側はこんなふうな解釈でよいのでしょうか。 {show_bom} {if $total_count > 0} {items} <div align="center">{$plink}</div> {foreach name=test item=test from=$tests} <p style="text-align : center; overflow : hidden;"> {if $is_image}<a href="{$affiliate_link}" target="_blank"><img src="{$medium_image_url}" alt="{$title|mb_truncate:100:" ..."}" style="border : 1px solid #999999;" /></a><br />{/if} <a href="{$affiliate_link}" target="_blank">{$title|mb_truncate:100:" ..."}</a><br /> {$price|number_format}円<br /> (<a href="{$shop_affiliate_link}" target="_blank">{$shop_name|mb_truncate:100:" ..."}</a>) </p> {/foreach} <div align="center">{$plink}</div> {/items} {else}{* if $total_count > 0 の条件を満たさない場合 *} <p>検索条件に合う商品はありません。</p> {/if}{* if $total_count > 0 *} 結果はといいますと、下記エラーがでてしまいました。 Warning: Invalid argument supplied for foreach() in /usr/local/php5/pear/Pager/Common.php on line 1365 馬鹿な自分が嫌になります。

関連するQ&A

  • arrayをどうやって表示するのか?

    array をどうやって表示したら良いのでしょうか? 一応参考書には下記のようなコードがあってそのまま打つと普通にブラウザには出てこないので、print を文頭につけたのですが、「array 」としか出てこないので、どうしたら良いのかわかりません。当然のことながら$cだけ表示できたら良いです。どうかご教授よろしくお願いします。 $a = array(1,2,3); $b = array(1,3,4); $c = array_diff($a,$b);

    • ベストアンサー
    • PHP
  • Arrayしか表示されない。。。

    DBに値が入っているか確認し入っていたら処理を行うスクリプトを作成しているのですが何度やってもArrayしか表示されず困っています。 DBにはoshieteといった値が入っており if($rows['goo'] != ""){ echo "OK"; } といった簡単なものです。しかしOKは表示されずArrayしか表示されません。 どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • 何故、Array(3)と表示されるのでしょうか?

    いつもお世話になりありがとうございます。 下記プログラムでTaro,Jiro,Saburoと表示されないで、 Array(3)と表示されます。 どこが違うのでしょうか? ご回答のほど宜しくお願い申し上げます。 <!DOCTYPE html> <html lang = "ja"> <head> <meta charset = "utf-8"> <title>JavaScriptの練習</title> </head> <body> <script> /*console.log("Hello World!") var x=55156,y=29526,z=35489; console.log(x+y+z);*/ var family=["Taro","Jiro","Saburo"]; console.log(family); </script> </body> </html>

  • array の使い方

    VBで作業しています。VB6ではありません。 array 関数でサンプルプログラムなどをみているとよく、 test=array("りんご","バナナ","らっきょ")などとあります。このりんご、バナナにあたる部分がもし 数、文字 が毎回かわるデータを取得してきたい場合どうすればいいのでしょうか? test=array(??????どうすれば?? うまく説明しづらいのですが、XSIという3Dソフトのスクリプトで ダイアログボックスを表示する際に、そのダイアログの選択肢をarrayで中身を記入しなければいけません。しかし、その選択肢が常に変化しているパラメータなのであらかじめ array内に決定しておくことができないのです。すみません、、わかりづらいかもしれませんがよろしくお願いします。

  • Arrayを並びかえる!?

    お世話になります。 $w をprint_rすると Array ( [0] => Array ( [email] => gmail.com ) [1] => Array ( [email] => yahoo.co.jp ) [2] => Array ( [email] => hotmail.com ) ) になり、$aは Array([0]=>yahoo.co.jp, [1]=>gmail.com, [2]=>infoseek.com) になります。 $wと$aをarray_diffをしようし、お互いに重複している値を消去し、消去するにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • array_reverse()の使い方について

    array_reverse() の使い方が分かりません・・・。 CSV(降順)のデータを読み込んでPHPで表示する仕組みを作っています。 そのCSVを昇順にしたく、array_reverse() を使っても、思うようにデータが表示されません。 CSV(data.csv)は以下の通りです。価格で降順になっているものです。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) PHPは以下の通りです。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); if($j<3 ){ echo $line1 $line2.' <br />'; $j++; } } ?> $Data を 昇順にしたいので(もともとのCSVを昇順で作ることはできません)、 array_reverse($Data) をどこかに入れたらいいと思うのですが、forの前、後ろといろいろ入れてみたのですが、思ったように表示がされず困っています。 お力おかしください!!!よろしくお願いします。

    • ベストアンサー
    • PHP
  • arrayについて

    私はVBでarrayを使ってお天気プログラムというものを作りたいんですが初心者なのでいまいちどのようにコードを組めばいいかわかりません。 月曜日から日曜日までの天気の情報が曜日ごとに表示されるプログラムのことで、テキストファイルにある風速、最高温度、最低温度をラベルに表示させたいのですがどのようなコードを書けばいいんでしょうか?? 例えばメニューバーに月曜日から日曜日をつくり、月曜日をクリックしたら月曜日の風速、最高気温、最低気温をラベルに表示させるようにしたいんですけど。。 まずメニューにLoadをつくり、曜日ごとに天気のデータが載っているテキストファイルの内容をメニューバーのLoadから表示させたい時どのようなコードを組めばいいんですか?? またarrayのコードをどのように組めばいいんですか?? ホントに分からないので教えてください!!!

  • データの表示の仕方について教えてください(PEAR PAGERの使い方)

    PHP5.2.4 MYSQL14.12DISTRIB5.0.4 WINXP IE=6.0 PEAR PAGERを使って、1ページに10件ずつ表示されるようにしたくて、下のようなコードを書きました。不具合として、1ページ目の10件表示はされるのですが、2ページ目、3ページ目といどうさせても表示が1から10件目とおなじになります。結果セットからのデーターの表示の仕方がおかしいと思ってるんですが、どういうふうにしていいのか 全く判りません。どなたか、素人にも判るようにご教授いただけたらと思います。宜しくお願いいたします。 <?php require_once 'Pager/Pager.php'; $totalItems = 47; $perPage=10; /*ページャーのパラメーター設定 モード:スライディング ページごとの表示数(perpage)カレントページの前後の表示ページ数(dalta)アイテムの数(totalitem)  */ $params = array( 'mode' => 'sliding', 'perPage' => $perPage, 'delta' => 5, 'totalItems' => $totalItems ); /*ページャーインスタンスの生成*/ $pager =& Pager::factory($params); /*ページのデータの取得*/ $links = $pager->getLinks(); print($links["all"]); /*現在のページ番号を取得して配列に入れる*/ $currentPageID = $pager->getCurrentPageID();  /*ページIDのオフセット値を返す*/ $index=($currentPageID-1)*$perPage+1;          if($rows==0){ /* 取り出すデーターがないとき、エラーメッセージを表示 */    print "該当するデータが見つかりませんでした。\n";  }else{ for($i=$index;$i<$index+$perPage;$i++){   if($i<=$totalItems){ $row=mysql_fetch_array($result) ?> <div align="center"> <TABLE border="1"> <TR> <TD colspan="2" width="500" align="center"><?=$row["e"] ?></TD> </TR> <TR> <TD height="45"><?=$row["setumei"] ?></TD> </TR> </TABLE><br><br> <div> <?php } } } ?>

    • 締切済み
    • PHP
  • array_uniqueについて

    こんにちは。質問させてください。 array_unique関数はPHP4.04以降は使用できないと マニュアルに記述されていました。 ですがどうしても配列内の重複した値を 削除したいのですが、ロジックがうまく 思いつけません・・・ どなたかわかる方はいらっしゃいますか? $test_array = array("america","japan","america","canada","japan"); ⇒ ("america","canada","japan") しかもソートしたいです!! 宜しくお願い致しますm(_ _)m

    • 締切済み
    • PHP
  • Arrayについて

    Dim ar(1 To 6) As Integer Dim i As Integer for i = 1 to 6 ar(i) = i + 1 Next というソースがあり、作成された ar(2,3,4,5,6,7)という配列を、 Array(2,3,4,5,6,7)のようにArray()の中に入れたいのですが上手くいきません。どのようにしたら良いでしょうか? Array(ar)としても駄目でした。