2014-11-28 6 views
0

나는 흥미로운 문제라고 생각하며 내가 생각할 수있는 것보다 나은 해결책을 찾고있다.동적으로 생성되는 배열의 요소에 액세스하기 PHP

동적으로 생성되는 요소의 배열을 포함하는 PHP 코드로 반환되는 POST 배열이 있고 그 길이는 사용자에 따라 다릅니다.

Array = (
[element-1] = a, 
[element-2] = b, 
[element-3] = c, 
[non-element] = something, 
[another-non-element] = something 
) 

지금, 내 PHP 코드에서, 나는

$element= $_POST['element-1']; 
saveElements(element); 

그래서 나는 모든 요소 (하지 않은 요소)

예를 들어, 함수를 호출 할 필요가 예 전체 배열을 살펴보고 요소를 선택하는 좋은 방법에 대해 생각해보십시오.

$i = 1; 
foreach($_POST as obj){ 
if(obj == 'element-' + $i) 

$element= $_POST['element-' + $i]; 
saveElements(element); 

} 

주문이 정확하다고 가정하기 때문에 걱정됩니다.

더 좋은 제안이 있으십니까?

감사합니다.

답변

1

그것은 당신이 당신의 입에의 설정 이름 속성을 생성 할 수있는 형태 인 경우 그렇게 아래

Array = (
    [elements] = [a, b, c], 
    [non-element] = something, 
    [another-non-element] = something 
) 

처럼 $_POST 모습 방금 $_POST['elements']

foreach($_POST['elements'] as $element) { 
    saveElements($element); 
} 
+0

, 이러한 요소가 다른 장소에서 온 배열 – cjr

1

을 반복 할 수 있는지 확인하는 것이 좋습니다 모든 요소는 "element []"에 대한 것입니다. 그러면 $ _POST [element]는 생성 한 요소의 배열입니다.

foreach($_POST['element'] as $index => $value){ 
    saveElement($value); 
} 

고려 주석이는 것보다 더 나은 : 정말 하나 개의 요소에 그들 모두를 할 권한이없는, 그래서

가 내가 위에서 말한 유사
foreach($_POST as $key => $val){ 
    preg_match('#element-\d#i', $key, $found); 
    if(isset($found[0])) 
     saveElement($val); 
} 
+0

슬프게도,이 요소들은 모두 같은 장소에서 나오므로 나는 그것들을 단지 요소에 넣을 수 있다고 생각하지 않습니다. – cjr

+1

다음과 같이하면 더 좋을 것입니다 : foreach ($ _ POST를 $ key => $ val) { preg_match ('# element- \ d # i', $ key, $ found); if (isset ($ found [0])) saveElement ($ val); }' – krzysiej

관련 문제