2010-07-21 2 views
1

다음과 같은 배열 데이터가 있습니다. 통화가 USD 인 경우 '판매'값을 데이터베이스에 저장하고 싶습니다.배열에서 값을 얻기 위해 오른쪽 키를 가리키는 방법은 무엇입니까?

 
Array ([currency] => USD [sale] => 9120.00 [buy] => 8970.00 ) 
Array ([currency] => SGD [sale] => 6653.75 [buy] => 6520.75 ) 
Array ([currency] => HKD [sale] => 1173.40 [buy] => 1152.10 ) 
Array ([currency] => CHF [sale] => 8685.40 [buy] => 8517.40 ) 
Array ([currency] => GBP [sale] => 13958.80 [buy] => 13675.80 ) 
Array ([currency] => AUD [sale] => 8054.05 [buy] => 7885.05 ) 
Array ([currency] => JPY [sale] => 105.10 [buy] => 102.40 ) 
Array ([currency] => SEK [sale] => 1247.90 [buy] => 1216.80 ) 
Array ([currency] => DKK [sale] => 1590.95 [buy] => 1547.75 ) 
Array ([currency] => CAD [sale] => 8756.35 [buy] => 8568.35 ) 
Array ([currency] => EUR [sale] => 11776.75 [buy] => 11555.75 ) 
Array ([currency] => SAR [sale] => 2441.35 [buy] => 2382.35 ) 
Array ([currency] => NZD [sale] => 6550.75 [buy] => 6389.75 ) 
Array ([currency] => CNY [sale] => 1346.75 [buy] => 1322.35 ) 

감사합니다. 여기

내 코드 :

foreach ($cur_array as $curs) { 
    print_r ($curs)."<br>"; 
    if ($curs['currency'] = "USD") { 
     $curs_sale = $curs['sale']; 
      $curs_name = $curs['currency']; 
      $db->query("UPDATE currency SET rate = '". 
       $curs_sale."' WHERE currency_id ='".$curs_name."'"); 
    } 
} 
+0

귀하의 테이블 컬럼 돈을 귀하의 변수에 해당하지 않습니다. 조금 혼란 스럽네요. – BoltClock

답변

2

당신은 단지 그것을 통해, 배열에 루프를 모든 통화 배열을 저장할 수, 어떤 통화가 USD에 해당하는지 확인하고 해당 통화의 판매 가치를 저장하십시오.

foreach ($currencies as $curr) 
{ 
    if ($curr['currency'] == 'USD') 
    { 
     // Save $curr['sale'] into your database 

     // Break as further iteration isn't needed 
     break; 
    } 
} 

futu what community wiki means을 모르는 경우 커뮤니티 위키로 질문을 표시하지 마십시오.

+0

나는 똑같이했으나 잘못된 값을 얻었습니다. – Chandra

+0

잘못된 값으로 무엇을 의미합니까? – BoltClock

+0

커뮤니티 위키에 대해 정말 유감입니다. 저장된 값은 $ cur_sale의 마지막 값입니다. break 문을 추가 할 때 올바른 값을 저장할 수 있습니다. 하지만 currency_name과 판매 가치를 모두 저장하려면 어떻게해야합니까? 감사. – Chandra

0

모든 항목이 배열에있는 가정라는 $ 항목 :

foreach ($entries as $entry) { 
    if ($entry['currency'] == 'USD') { 
     // do stuff with $entry['sale'] 
    } 
} 
1

제안 된 BoltClock은 정확합니다.

 
Array ([currency] => USD [sale] => 9120.00 [buy] => 8970.00 ) 
Array ([currency] => SGD [sale] => 6653.75 [buy] => 6520.75 ) 
Array ([currency] => HKD [sale] => 1173.40 [buy] => 1152.10 ) 
Array ([currency] => CHF [sale] => 8685.40 [buy] => 8517.40 ) 

에 : : 또한,에서 배열의 구조를 변경 고려

 
Array (
    [USD] => Array([sale] => 9120.00 [buy] => 8970.00), 
    [SGD] => Array([sale] => 6653.75 [buy] => 6520.75), 
    [HKD] => Array([sale] => 1173.40 [buy] => 1152.10), 
    [CHF] => Array([sale] => 8685.40 [buy] => 8517.40) 
) 
이 구조는 예를 들어 청소기 코드를 작성 할 수 있습니다

:

$usd_sale = $entries['USD']['sale']; 
+0

+1 통화 이름을 키로 사용하는 것이 더 의미가 있습니다. – BoltClock

+0

그러나 데이터의 키에 적절하게 매핑되지 않을 수 있습니다. 이는 주문 또는 제품 테이블 일 수 있습니다.이 경우 통화는 항목의 올바른 키가 아닙니다. 데이터베이스에서 이와 유사한 엔티티 테이블에 대한 통화를 기본 키로 만드는 것을 상상할 수 있습니까? – Shabbyrobe

+0

@Shabbyrobe : 테이블 통화 (int id, varchar 이름, float 판매, float 구매), 코드 :'while ($ line = mysql_fetch_array ($ result)) $ entries [$ line [ 'name']] = 배열 ​​('sale '=> $ line ['sale '],'buy '=> $ line ['buy ']);' – Anax

관련 문제