2012-11-30 3 views
0

내 웹 사이트에 소셜 미디어 아이콘을 표시 할 방법을 찾고 있습니다. 소셜 미디어 서비스에 따라 내 아이콘이 번갈아 표시됩니다.PHP로 배열 값을 기반으로 배열 항목을 대체하는 방법은 무엇입니까?

  1. 우선 순위 번호 1 - 색상을 교대로 배열 항목을 정렬하십시오.
  2. 우선 순위 번호 2 - 색상 그룹별로 정렬하십시오.

두 가지 조건부 검사가있을 수 있다면 좋겠다.

먼저 색상을 교대로 정렬하려고합니다. 그러나 3 개의 은색 아이콘과 1 개의 파란색 아이콘 만있을 수 있습니다.

둘째, 색상이 번갈아 변경되지 않았습니다. 나는 그저 색깔로 아이콘을 덩어리로 뭉치면 좋을 것이다. 그래서 나는 1 개의 파란 아이콘을 가지고있을 것이고, 그 다음은 3 개의은 아이콘으로 이어질 것이다.

Array 
(
    [0] => Array 
     (
      [service] => twitter 
      [url] => https://twitter.com/1/ 
      [color] => silver 
     ) 

    [1] => Array 
     (
      [service] => google_plus 
      [url] => https://plus.google.com/2/posts 
      [color] => silver 
     ) 

    [2] => Array 
     (
      [service] => facebook 
      [url] => https://www.facebook.com/3/ 
      [color] => blue 
     ) 

    [3] => Array 
     (
      [service] => linkedin 
      [url] => http://us.linkedin.com/company/4/ 
      [color] => blue 
     ) 

    [4] => Array 
     (
      [service] => youtube 
      [url] => http://www.youtube.com/user/5/ 
      [color] => silver 
     ) 

) 

나는 반드시 내 질문에 전체 깃털 코드 솔루션을 찾고 있지 않다 :

여기 아이콘 데이터의 내 배열입니다. 어느 정도 내가 이것을 달성 할 수있는 방법이나 내가 사용해야 할 기능에 대한 조언을 찾고있다.

+0

을 시도 할 수 있고, 우선 순위 # 2 후퇴? –

+1

두 가지 색상 만 있습니까? – MatsLindh

+0

@fiskfisk 네, 단 두 가지 색상. –

답변

2

찾고있는 색으로 이름이 지정된 새 빈 배열을 두 개 만듭니다. 원래 배열을 통해 foreach을 입력하고 원래 배열의 색인을 적절한 배열에 입력합니다 (실버 아이콘 인 경우 $silver 배열에 입력).

당신 같은 결과가 발생해야한다 : 당신이 그 새로운 배열을 갖게되면 하나 이상의 1 자리 떨어져 서로의 경우

$silver = array(0, 1, 4); 
$blue = array(2, 3); 

가, 그들을 계산, 교류가 작동하지 않습니다. 한 배열의 색인을 다른 배열보다 앞에 출력하면됩니다.

아이콘이 바뀔 수있는 경우, 큰 아이콘에서 항목을 출력 한 다음 다른 항목을 출력하고 둘 다 비어있을 때까지 교체하십시오.

1

당신은 너무 우선 순위 # 1을 충족 할 수없는 경우를 결정 어떻게

$silver = array_filter($data,function($v){ return $v['color'] == "silver" ;}); 
$blue = array_filter($data,function($v){ return $v['color'] == "blue" ;}); 

foreach(array_map(null, $silver,$blue) as $set) 
{ 
    foreach($set as $var) 
    { 
     printf("<a href=\"%s\" style=\"color:%s;\">%s</a> <br />",$var['url'],$var['color'],$var['service']); 
    } 
} 

See Live Output

+0

흥미로운 접근 방법. 다른 PHP 함수 내부의 함수 정의는 무엇입니까? 그게 가능하다는 것도 몰랐다. 이러한 유형의 사용에 대한 설명서가 있습니까? –

+0

호출 된 '익명 함수'또는 '클로저'는 http://php.net/manual/en/functions.anonymous.php를 참조하십시오. – Baba

관련 문제