2016-12-30 1 views
0

루프를 통과해야하는 배열이 있고 특정 키의 경우 chopActNum 함수를 호출해야합니다. 이 함수는 계좌 번호를 받아 "xxxxxxxxxx1234"형식으로 변환합니다. 그런 다음 전체 계정 번호 대신이 새로운 형식을 표시하고 싶습니다. 내 $accountList은 계정에 대한 모든 정보를 보유하고 있습니다. 내 혼란은 현재 Smarty 템플릿에 할당을 통해 내 계정 정보를 모두 표시한다는 점에서 다릅니다. 나는 끔찍한 설명을하기 때문에 아마도 내 코드를 보면 내 문제를 해명하는 데 도움이 될 것이다.
내 기능 :어떻게 배열을 통해 루프를 수행하고 각각에 대해 함수를 호출합니까?

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'을 호출해야하는 특정 키 중 하나인지 어떻게 알 수 있습니까? – Barmar

+0

나는 이해하지 못한다. 귀하의 PHP 코드에서 당신은 $ chopNum지고 있지만 당신은 결코 그것으로 아무것도하지 않습니다. 다음과 같이하고 싶지 않으신가요? $ a [ 'chopNum'] = $ chopNum' 또는 '$ a [ 'actNum'] = $ chopNum'? $ a에 & reference 마커를 두는 것을 잊지 마십시오. 즉, 'foreach ($ achList as & $ a)' 또는 $ 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에서 키를 가져온 다음 특정 키인지 확인하십시오.

$specific_keys = array(...); 
foreach ($achList as $key => $acct) { 
    if (in_array($key, $specific_keys)) { 
     $actNum[] = chopActNum($acct['actNum']); 
    } else { 
     $actNum[] = $acct['actNum']; 
    } 
} 
관련 문제