2015-01-09 2 views
0

데이터베이스 테이블과 열에 다차원 배열을 전달하려고하지만 올바른 결과를 얻으려면 foreach 함수를 어떻게 삽입 할 수 있는지 이해할 수없는 곳에서 메꾸려합니다. 내 데이터 아래다차원 배열에서 데이터 저장

:

데이터 :

array(5) { 
     ["option_id"]=> int(115) 

    ["name"]=> 
      array(3) { 
      [0]=> string(1) "S" 
      [1]=> string(1) "M" 
      [2]=> string(1) "L" 
      } 
    ["value"]=> array(3) { 
      [0]=> string(5) "12345" 
      [1]=> string(5) "12346" 
      [2]=> string(5) "12347" 
     } 
    ["price"]=> array(3) { 
      [0]=> string(3) "199" 
      [1]=> string(3) "199" 
      [2]=> string(3) "199" 
     } 
    ["inventory"]=> array(3) { 
    [0]=> string(1) "1" 
    [1]=> string(1) "1" 
    [2]=> string(1) "1" 
    } 
} 

이름, 값, 가격, 재고의 필요성에서 각 문자열은 데이터베이스 data from database

의 각 행에 저장하지만 내 문제가 될 데이터베이스에 데이터를 저장하기 위해 foreach를 작성하면 모든 컬럼에 이름 만 저장합니다.

데이터를 저장하기 위해 사용하는 모델 임은 다음과 같습니다

function saveBatchOptionsValues($option_values){ 
     $sequence = 0; 
     foreach($option_values['name'] as $value){ 

      $values['option_id'] = $option_values['option_id']; 
      $values['name'] = $value['name']; 
      $values['value'] = $value['value']; 
      $values['sequence'] = $sequence; 
      $values['inventory'] = $value['inventory']; 
      $values['weight'] = floatval(1.00); 
      $values['price']  = floatval($value['price']); 
      $sequence++; 
      $this->db->insert('option_values', $values); 
     } 

    } 

문제는 내가 각 행에 .. 열 값, 가격, 재고 등을 통과 할 수있는 방법인가?

도움을 주시면 감사하겠습니다.

당신이 이름을 반복하면
foreach($option_values as $value){ 
+0

이 코드는 아마도 codeigniter 태그 – Ding

답변

1

만 이름을 얻을 것이다 당신을 서브 어레이 :

+0

mmm. 나에게 명확하지 않다 :( – Dario

+0

그게 다야, 그 일을 :) – Dario

+0

괜찮지. 더 나은 이해를 위해 설명을 추가했습니다. 아마도 당신은 그것을 더 잘 이해할 것입니다. – Guillermo

0

귀하의 문제는 당신이

foreach($option_values['name'] as $value){ 

당신은 같은 것을 할 필요가 foreach 기능을 사용하는 방법에 예상대로 행을 얻는 방법은 데이터 구조를 반복하는 방법입니다.

function saveBatchOptionsValues($option_values){ 
    $count = count($option_values["name"]); 
    for($i = 0; $i < $count; $i++) { 
     $values['option_id'] = $option_values['option_id']; 
     $values['name'] = $option_values['name'][$i]; 
     $values['value'] = $option_values['value'][$i]; 
     $values['sequence'] = $i; 
     $values['inventory'] = $option_values['inventory'][$i]; 
     $values['weight'] = floatval(1.00); 
     $values['price'] = floatval($option_values['price'])[$i]; 
     $this->db->insert('option_values', $values); 
    } 
} 

간략한 설명을

내가 변경했습니다 : 그들은 (대신 foreach 문으로 반복의) 다른 배열에 걸쳐 있기 때문에 당신은 숫자 인덱스에 의해 다른 행의 다른 값에 액세스 할 수 있습니다 너의 모습에 맞는 예. 배열 배열이 맞습니까? 서브 어레이에는 동일한 종류의 데이터가있다. 이름. 따라서 모든 이름은 동일한 배열에 저장됩니다. 해당 하위 배열을 반복 할 경우 어떻게됩니까? 각 반복에서 이름을 검색합니다. 예를 들어 두 번째 반복에서는 이름을 검색합니다. 하지만 이제는 정확한 이름/제품 가격을 원합니다. Foreach 루프를 사용하면 foreach를 사용하여 하나의 배열을 반복 할 수 있기 때문에 불가능합니다. 그래서 당신이 정말로하고 싶은 것은 동시에 여러 배열을 반복하는 것입니다. 카운터가 증가한 for 루프를 사용하여이를 달성 할 수 있습니다. 이 카운터를 사용하면 같은 반복에서 여러 배열 (이름, 가격 등)에 각각 액세스 할 수 있습니다. 조금 더 분명 해졌기를 바랍니다.

+0

을 가지고있는 것처럼 보이지만 배열 값에 이름, 값, 가격 및 재고가 표시되므로이 경우 codeigniter db의 유용한 insert_batch 함수가 사용됩니까? – Dario

+0

이것은 데이터를 행으로 가져 오는 데 도움이되지 않습니다. 그는 가격 (0)과 재고 (0) 등과 함께 이름 (0)을 원합니다. – Guillermo