728x90

sort, resort 는 배열안에 있는 값을 정렬하는 함수다.
sort : 오름차순 정렬,
rsort : 내림차순 정렬

 

ksort, krsort key로 배열을 정렬한다.
ksort : 오름차순 정렬
krsort : 내림차순 정렬

 

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age); // key로 배열을 정렬 ,내림차순 정렬

foreach($age as $key=>$value){
   echo "Key=" . $key . ", Value=" . $value;
   echo "<br>";
}

 

arsort : 배열을 값으로 내림차순 정렬하고 인덱스의 상관관계를 유지
asort : 배열을 값으로 오름차순 정렬하고 인덱스의 상관관계를 유지

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
print_r($fruits);
echo '<br />';
arsort($fruits); // 배열을 값으로 내림차순 정렬하고 인덱스의 상관관계 유지
print_r($fruits);
?>

 

======================================================

$a=array("a"=>1, "ce"=>2, "ec"=>3, "br"=>4, "df"=>5, "f"=>-5);
1. 연관배열의 value값들을 합하라.

    array_sum 은 배열 안의 모든 값을 더하여 그 결과를 리턴하는 함수다.

    echo array_sum($a);

 

    array_sum 이 foreach 문으로 결과보다 훨씬 빠르다고 되어 있다. 이유는 fast C로 구현되어 있다고 한다.

 

2. 연관배열의 인덱스값에 의한 내림차순 정렬을 하고 그 값을 list와 each를 사용하여 출력하라. (krsort 이용할 것)

    krsort($a); // key로 배열을 내림차순 정렬
    for($i=0, $c=count($a); $i<$c; $i++) {
        list($key, $value) = each($a);
        echo $key, ' = ', $value, '<br />';
    }

3. 다음 배열을 오름차순으로 정렬하고 50 보다 큰 값을 지닌 요소들의 개수를 출력하라.
$a=array(34, 7, 5, -54, 64, 59, 100, 59, 27);

 

array_filter()함수는 배열의 각 요소 중에서 지정한 함수의 조건에 일치하는 요소만 새로운 배열에 다시 되돌려주는 함수다.

$arr = array_filter($R, '콜백함수명'); // $R : array

 

아래 코드를 실행해보면 필터링한 결과를 알 수 있다.

test_filter는 콜백함수명이다.

<?php
function test_filter($var){ // 배열 요소의 값을 인수로 받는다.

    if(! is_int($val)) { // 전달된 값이 정수가 아니면 false를 반환한다.

       return false;

    }

    return($var > 50); // 조건에 맞으면 true, 조건에 맞지 않으면 false를 반환한다.
}

print_r(array_filter($a,'test_filter')); // pinrt_r 함수는 배열을 출력한다.

echo '<br />';
echo count(array_filter($a,'test_filter'));

?>

 

문제의 답

sort($a); // 오름차순 정렬, rsort() 내림차순 정렬
echo count(array_filter($a, function($val){
    return $val > 50;
}));

 

 

4. 다음 배열에서 2의 배수들을 삭제하고 배열 전체를 출력하라.
$a=array(2,4,7,9,13,34,56);
(2,4,34,56을 삭제하고 배열a를 출력)

<?php
$a=array(2,4,7,9,13,34,56);
print_r(array_filter($a,function($n){
    return $n%2 !=0;
}));
?>

 

5. 다음 배열에서 소수점 10자리수가 5인(xx.5xx) 값들을 출력하라.
$a=array(34.12, 7.0, 5.9, -54.512, 64.52, 59.5, 100.1, 59.23, 27.54);

 

문자열에 특정 문자열이 포함되어 있는지 확인하려고 할때 strpos()함수를 사용한다.
strpos(string,find,start)

 

<?php
$find_letters = array('a', 'c', 'd');
$string = 'abcdefg';
if(strpos($string, $find_letters) !== false)
{
    echo 'All the letters are found in the string!';
}
?>

 

문제의 답

<?php
$a=array(34.12, 7.0, 5.9, -54.512, 64.52, 59.5, 100.1, 59.23, 27.54);
print_r(array_filter($a,function($n){
    return strpos($n, '.5') !== false;
}));
?>

또는

<?php
$a=array(34.12, 7.0, 5.9, -54.512, 64.52, 59.5, 100.1, 59.23, 27.54);
print_r(array_filter($a,function($n){
    return preg_match('/\.5/',$n);
}));
?>

 

블로그 이미지

Link2Me

,