문제

4-5 개의 다른 변수에 적용하고 싶은 함수 (쉽게 count ()를 사용하겠습니다)가 있습니다. 지금, 나는 이것을하고있다 :

$a = count($a);
$b = count($b);
$c = count($c);
$d = count($d);

더 좋은 방법이 있습니까? 배열이 array_map 함수를 사용할 수 있다는 것을 알고 있지만 배열 내부의 값 대신 값이 별도의 값으로 유지되기를 원합니다.

감사.

도움이 되었습니까?

해결책

나는 당신이 값이 배열에있는 것을 원하지 않는다고 말했지만 값을 통해 루핑을 위해 특별히 배열을 만드는 것은 어떻습니까? 즉:

$arr = Array($a, $b, $c, $d);

foreach ($arr as &$var)
{
   $var = count($var);
}

그래도 그것이 원래 방식보다 훨씬 더 깔끔한 지 확실하지 않습니다.

다른 팁

데이터를 수집하기위한 반복 변수가 많은 경우 코드가 제대로 설계되지 않았으며 배열을 사용하여 수십 개의 변수 대신 값을 저장해야합니다. 아마 당신은 다음과 같은 것을 원할 것입니다.

$totals = array("Visa"=>0,"Mastercard"=>0,"Discover"=>0,"AmericanExpress"=>0);

그런 다음 배열 요소에 추가합니다 (SQL의 While Loop 또는 수행중인 작업).

$totals['Visa'] += $row['total'];

그러나이 경로를 정말로 내려 가고 싶다면 큰 배치 로이 작업을 수행하려면 배열이 좋은 선택입니다. 그런 다음 배열을 위해 배열을하고 다음과 같은 변수 변수를 사용하십시오.

$variables = array('a','b','c'...);

foreach ( $variables as $var )
{
    ${$var} = count(${var});
}

Ben과 Traviso가 말한 것은 사용하지만 사용합니다 Array_walk 약간의 더 깨끗한 코드 :

$arr = Array($a, $b, $c, $d);
array_walk($arr, count);

추출물을 사용하여 값을 다시 가져올 수 있습니다.

//test data
$a = range(1, rand(4,9));
$b = range(1, rand(4,9));
$c = range(1, rand(4,9));

//the code
$arr = array('a' => $a, 'b' => $b, 'c' => $c);
$arr = array_map('count', $arr);
extract($arr);

//whats the count now then?
echo "a is $a, b is $b and c is $c.\n";

"더 나은"방법을 어떻게 측정합니까? 당신은 영리하고 짧은 것을 생각해 낼 수 있지만, 당신이 가진 것은 이해하기 가장 쉬운 것처럼 보입니다. .).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top