2016-12-30 3 views
0

私はループする必要がある配列を持っており、特定のキーについてはchopActNum関数を呼び出す必要があります。関数は口座番号をとり、それを "xxxxxxxxxx1234"形式に変換します。私は、アカウント番号全体ではなく、この新しいフォーマットを表示したいと思います。私の$accountListは、アカウントのすべての情報を保持しています。私の混乱は、現在、Smartyテンプレートでの割り当てによってすべてのアカウント情報を表示していることです。私は説明するのが恐ろしいので、おそらく私のコードを見て私の問題を解明するのに役立ちます。
My機能:どのように配列と呼び出し関数をループするのですか?

public function chopActNum($actNum=0){ 

    $numPlace=strlen($actNum)-4; 
    $repeatX=str_repeat('x',$numPlace); 
    $actNumConcat=$repeatX.substr($actNum, -4); 
    return $actNumConcat; 

PHPの:

foreach($achList as $a) 
{ 
$actNum[] = $a['actNum']; 
$chopNum=$Ach->chopActNum($actNum); 
} 

$achList=$Ach->listAch($logged_userid); 
$smarty->assign("accountList",$achList); 

TPLコード:

{foreach from=$accountList item=v name=foo} 
<td class="tableData">{$v.actName}</td> 
<td class="tableData">{$v.actNum}</td> 
<td class="tableData">{$v.bankRoute}</td> 
{/foreach} 
+0

「chopActNum」を呼び出す特定のキーの1つであることをどのように知っていますか? – Barmar

+0

私は分かりません。あなたのPHPコードでは、$ chopNumを取得していますが、あなたはそれを使って何もしません。 '$ a ['chopNum'] = $ chopNum' または ' $ a ['actNum'] = $ chopNum' あなたのループの中に何かをしたいのですか?そして、あなたがしなければ、$に&リファレンスマーカーを置くことを覚えて、それは次のようになります。 'foreachの($ achList A $&と)' か、ループ内で$の内容を変更するが、変更はできませんループが終了すると返されます。 –

+0

私は週末に解決策を見つけることになったが、皆さんに助けてくれてありがとう! for($ x = 0; $ x chopActNum($ ACTNUM)。 $ achList [$ x] ['accountNumDisplay'] = $ chopNum; } –

答えて

0

このようなテンプレート用のデータを準備するために使用array_mapを:

$achList = arrar_map(function($v){ 
    return array(
    'actName' => $v['actName'], 
    'actNum' => chopActNum($v['actNum']), 
    'bankRoute' => $v['bankRoute'] 
); 
}, $achList); 
0

foreachでキーを取得し、それが特定のキーの1つであるかどうかを確認できます。

$specific_keys = array(...); 
foreach ($achList as $key => $acct) { 
    if (in_array($key, $specific_keys)) { 
     $actNum[] = chopActNum($acct['actNum']); 
    } else { 
     $actNum[] = $acct['actNum']; 
    } 
} 
関連する問題