2012-01-10 7 views
-1

일부 체크 박스 값을 배열로 추출하려고합니다. 내 문제는 배열 ($ is_types)입니다. 나는 $ 기대 배열로 is_types하고, (하나, 둘, 셋) 배열을 말한다 :결과 in_array를 배열로 변환

<?php 
    if (!is_array($types)) { 
    $types = array(); 
    } 
    $filtered_array = array_filter($types); 

$is_types = in_array($type, $filtered_array); 

    $output = _get_array(array($is_types), $bla, $bla2); 
?> 

UPDATE : 는 내가 달성하기 위해 노력하고 무엇을 바꿔해야합니다. 옵션이있는 체크 박스가 하나 있습니다 : 하나, 둘, 셋 등. 체크 할 때만 옵션을 저장해야합니다. 저장되는 것을 확인하는 것은 $ is_types로 충분하며 bool을 반환합니다. 그런 다음이 확인란을 기반으로 콘텐츠를 집계하기 위해 다른 쿼리를 수행해야합니다. 내가 필터링 확인란에 따라 배열 (하나, 둘, 셋)이있는 경우 즉, 다음 쿼리를

UPDATE2을 실행

function _get_array($type, $view_mode, $limit = NULL) { 

    $node = menu_get_object(); 
    $build = array(); 

    $query = new EntityFieldQuery(); 
    $created = isset($node) ? $node->created : 'now'; 
    $query 
    ->entityCondition('entity_type', 'node') 
    ->entityCondition('bundle', $type, is_array($type) ? 'IN' : '=') 
    ->propertyCondition('status', 1) 
    ->propertyOrderBy('created', 'DESC') 
    ->propertyCondition('created', $created, '<'); 

    if ($limit != NULL) { 
    $query->range(0, $limit); 
    } 

    $result = $query->execute(); 

    if (!empty($result['node'])) { 
    $nodes = entity_load('node', array_keys($result['node'])); 
    $build[] = node_view_multiple($nodes, $view_mode); 

    } 
    return !empty($build) ? $build : array(); 
} 

확인란은 어떤 값으로 체크 박스입니다. 그래서 _get_array (array ($ is_types), $ bla, $ bla2)를 쿼리합니다. 이 확인란으로 필터링 된 모든 노드를로드해야합니다.

모든 힌트는 대단히 감사하겠습니다. 감사합니다.

UPDATE3 : 감사합니다. 그 대답은 계속 이어져있었습니다. 내가 필요한 것은 다음과 같습니다 : $ filtered_array

+2

'**. 정확히'$ is_types'가 어떻게 보이길 원합니까? –

+0

최종 목표는 무엇입니까? 'in_array'는 배열이 아닌 bool을 반환합니다. 배열에 * 캐스트 할 수는 있지만 원하는 것이 아닌 것 같습니까? –

+0

배열 ($ is_types)은 배열 (1, 2, 3)이어야합니다. 감사합니다 – swan

답변

1

좋아, 무슨 뜻인지 알 겠어. 당신은 아마 다음과 같은 HTML ...

<input type="checkbox" name="test" value="one"/> 
<input type="checkbox" name="test" value="two"/> 
<input type="checkbox" name="test" value="three"/> 

그리고 서버

, 당신은으로 선택에 따라 1, 2 또는 3을 포함하는 배열을 할 수 있습니다.

<input type="checkbox" name="test[]" value="one"/> 
<input type="checkbox" name="test[]" value="two"/> 
<input type="checkbox" name="test[]" value="three"/> 

을 다음과 같이 서버에, 당신은 단순히이 액세스 :

기본적으로, 당신은과 같이, 배열로 test을 고려 PHP에게 '시험'에 대괄호를 추가 할 필요가

print_r($_REQUEST['test']); 

옵션을 선택하지 않으면 배열이 생성되지 않습니다. 대신, 다음을 수행하십시오

$options = isset($_REQUEST['test']) ? $_REQUEST['test'] : array(); 

하려면 다음을 수행 모든 변수가 합법적 있는지 확인하려면 다음 ** 부울을 반환합니다 in_array`

$legit = array('one','two','three'); 

foreach($options as $n=>$option) 
    if(!in_array($option, $legit)) 
     unset($options[ $n ]); 
+0

이 배열은 필터링 된 것들인지 모르겠습니다. – swan

+0

대답은 모두 함께 있습니다. $ bored_array에 액세스하는 동안 이미 예상 값을 반환하는 동안 나는 bool을 추출해야한다는 생각이 들었다. 교육에 많은 사람들에게 감사드립니다. 나는 배웠다. – swan

+0

@swan :'array_filter'가 필요 없다고 생각합니다. 선택한 체크 박스의 값만 서버에 전송됩니다 (사용자가 원하는 경우). –