2016-08-25 4 views
3

"hasMonday", "hasTuesday", "hasWednesday"등의 테이블에 일부 열이 있습니다. 특정 제품이 특정 날 (하루 이상 나타날 수 있음)PHP에서 이름이 유사한 경우 값이 true인지 확인

이제는 목록을 작성하여 제품의 데이터를 표시합니다 (사용 가능한 경우). 이 비슷한 : 제품 가격의

데이터,

월요일 (= 사실 hasMonday) 등

화요일 (hasTuesday = false)를

이 상품이 없습니다 이 날 동안

-

일주일의 배열을 만들었고 지금 나는 그 제품이 있다는 것을 알기 위해 노력하고 있습니다. 여기에 지금까지 내 코드입니다 : 당신이 볼 수 있듯이

$days= array("Monday", "Tuesday", "Wednesday", "Thursday","Friday","Saturday","Sunday"); 

      foreach ($days as $day) { 

      echo '<div id="$day" class="dayDiv">'; 
      echo "<h4>$day Products</h4>"; 
      if ($Product['hasMonday'] = true) { 
       // Show the info 
      }else{ 
       // "No info to show" message 
      }... 

은, 위의 코드는 매일의 모든 제품을 반복, 그래서 나는 가능한 적은 단계를 사용하여이를 확인하기 위해 어떤 도움을 주셔서 감사합니다. 같은 뭔가 :

foreach ($days as $day) { 

    echo '<div id="$day" class="dayDiv">'; 
    echo "<h4>$day Products</h4>"; 
    if($Product['has.$day']){ 
     //show the info 
    }else{ 
     // "No info to show" message 
} 

내가 쓴 것은 가능하지만 나는 그것이 내가 할 노력하고있어 더 많은 비트를 이해하는 데 도움이 믿는 경우에 확실하지. 귀하의 답변에 미리

덕분에

답변

7

나는 당신이 찾고있는 생각 : 바른 길에 있었다

if ($Product["has$day"]) { 

당신이 제안하는 방법 (if($Product['has.$day']){), 그러나 변수는 단일 내에서 구문 분석되지 않습니다 따옴표 및 연결 연산자 (.)는 interpolating a variable into a string과 같은 경우 필요하지 않습니다.

다른 사람이 댓글을 달았으로 키 후 변수에 추가 문자열이 작동하지 않을 것입니다 예를 $Product["$dayIsPresent"]를 들어,이 경우 변수의 끝이 모호하기 때문에,이 방법은, 경우에 작동하지 않습니다. 이와 같은 경우 변수가 올바르게 해석 되려면 변수가 enclosed in brackets이어야합니다 (예 : $Product["{$day}IsPresent"]). 변수가 문자열의 마지막 항목 인 경우와 같이 대괄호는 필요하지 않지만 원하는 경우 추가하지 않아도됩니다. 이 true 또는 false 값을 갖는 이외에, $Product['hasMonday']실제로을 설정하지 않을 수있을 가능성이있는 경우

, 당신은 단순히 truthiness에 대한 해당 배열의 키를 평가하는 대신 !empty를 사용할 수 있습니다.

if (!empty($Product["has{$day}"])) { 
+0

정말 가능한가요? 어떻게이 함수를 호출합니까? – HiGonz

+0

'$ Product [ "has {$ day}"] 문자열이 둘 다 작동 할 때 가독성을 위해 중괄호로 변수를 묶고, $ day 뒤에 아무 것도 추가하면 중괄호없이 코드를 깨뜨리는 것이 좋습니다. –

+1

@HiGonz 나는 이것이 당신이 제안한 코드의 라인을 대체 할 것을 의미했습니다. 나는 대답에 대해 조금 더 설명을 추가했다. 미안 그것은 처음에는 약간 간결했다. –

관련 문제