당신은 예를 들어, 당신이 검사 할 카테고리 ID의 배열의 일종이 있어야합니다
$categories = array(8, 4);
은 그럼 당신은 PHP의
in_array(needle, haystack)
내장 함수 같은 것을 사용할 수 있습니다.
if 조건은 다음 중 하나가됩니다. if (!in_array($item['single']['catid'], $categories)) {
.
당신은 더 복잡한 문제에 대한 원리를 이해할 수 있도록, 당신은 위의를 사용해야합니다,하지만 난 당신에게 그것이 작동하는 방법의 아이디어를 제공하기 위하여려고하고있다 :
기능이있는 ($ 목표, $ 배열) { foreach ($ array as $ array) {// 배열의 각 요소를 통해 이동 if ($ element == $ target) {// 검색 대상 요소가 있는지 확인합니다. return true; // true를 반환하고, 존재하고, 거기서 멈추십시오. } else { // 그냥 무시하십시오 ... } } false를 반환합니다. // 여기에 도착하면 true를 반환 한 것이 없음을 의미하므로 존재하지 않습니다. }
if (exists($item['single']['catid'], $categories)) {
으로 사용됩니다.
존재하는지 여부를 평가하기 전에 처리해야하기 때문에 if 문 내부에있는 경우 작동하지 않습니다. 그래서 당신은 if
문장 전에 그것을 할 수 있었고 결과를 변수에 저장하거나 함수 (PHP가 제공)를 사용할 수있었습니다.
개념이 더 복잡한 문제를 해결하는 데 도움이되기를 바랍니다.
참고 :이 입력은 배열 형태로 가정하며, 직접 입력하지 않으면 다양한 방법으로 빌드 할 수 있습니다.
업데이트는 :
입력 필드를 통해 얻을 입력하면 POST 중 하나를 지정하거나하는 방법으로 GET 할 수있는 양식을 통해 전송됩니다. 그 후
$categories_string = $_POST['the_name_field_in_the_input_tag'];
당신이 목록으로 이해해야한다 : 가정 당신이 사용하는 POST이가 텍스트 필드에 입력 된대로 문자열로 입력 을 얻을 것 어떻게입니다 항목을 쉼표로 구분하여 가정 해 봅시다 : 1,3,5,8
. 다음은 단순히 쉼표로 구분됩니다. explode($delimiter, $string)
을 사용할 수 있습니다. 그런 :
$categories_array = explode(',', $_POST['categories']);
하지만 1, 2, 3,5,6
같은 것을 얻을 수 있도록, 입력을 믿을 수 없다. 당신은 모든 공간을 가질 것이기 때문에 그 공간들은 그것을 망칠 것입니다. 이를 제거하려면 예를 들어 trim
을 사용할 수 있습니다.
$categories = array(); // Create the array in which the processed input will go
foreach ($categories_array as $c) { // Go through the unprocessed one
$categories[] = trim($c) * 1; // Process it, and fill the result. The times one is just so that you get numbers in the end and not strings...
}
은 그럼 당신은 이전과 같이 사용하지만, 이것은 단지 예를 들어 있음을 유의하십시오, 당신은 심지어 모든 단계를 필요로하지 않을 수 있습니다, 정기적으로이 입력을 처리하는 데 훨씬 더 효율적인 방법은 (가 수 표현 예). 그러나 여기에 대한 관심은 입력을 위생적으로하는 것이 아니라 결국 그렇게 할 필요가 있다는 것을 명심하십시오.
희망 사항 : 충분히 명확합니다.
대단히 자세한 설명과 이해에 감사드립니다. 고맙다. 나는 이해하고 다시 당신에게 돌아 오기 위해 지금 노력하고 있습니다. 예 양식 (입력 필드)을 사용하여 사용자가 '1, 5, 10, 52 .....'과 같은 것을 추가 할 수 있도록합니다. –
@pixelngrain 환영합니다 :) 답변을 업데이트하고 알았습니다! – jadkik94
큰 도움과 설명. 고마워하고 잘 작동합니다. –