복붙노트

print_r ()의 출력에서 ​​변수를 볼 수 있지만 코드에서 액세스하는 방법을 모릅니다.

PHP

print_r ()의 출력에서 ​​변수를 볼 수 있지만 코드에서 액세스하는 방법을 모릅니다.

내가 봤 거든 Devel, Firebug 용 Drupal을 설치했지만 찾지 못했다.

나는 내가 원하는 것을 발견했다. 나는 어디 있는지 알고있다. 나는 그것을 얻는 방법을 모른다.

이것을 코드 괄호에 넣겠습니다.하지만 Devel은 파일 이름 (.tpl.php 파일에 고정시키고 싶습니다)을 알려줍니다 :

field_image (Object) stdClass 
  handler (Object) views_handler_field_field 
    view (Object) view 
      result (Array, 2 elements) 
        0 (Object) stdClass 
          _field_data (Array, 1 element) 
            nid (Array, 2 elements) 
              entity (Object) stdClass
                field_image (Array, 1 element) 
                  und (Array, 1 element)
                    0 (Array, 11 elements)                                      
                      filename (String, 23 characters ) FILENAME.jpg

그렇다면 PHP를 사용하여 FILENAME.jpg 파일을 출력하려면 어떻게해야합니까?

<?php print $something->other; ?>

해결법

  1. ==============================

    1.변수에서 값을 읽어야 할 때마다 그 값에 액세스하기 위해 어떤 표현식을 공식화해야 하는지를 알아야합니다.

    변수에서 값을 읽어야 할 때마다 그 값에 액세스하기 위해 어떤 표현식을 공식화해야 하는지를 알아야합니다.

    간단한 변수 값의 경우 이것은 간단합니다. 변수 이름을 가져 와서 $ 기호를 접두사로 사용하여 변수에 액세스하면됩니다.

    var_dump($variable);
    

    여기에 설명되어 있습니다.

    그러나 이는 문자열이나 정수와 같은 간단한 데이터 유형에서만 작동합니다. 복합 데이터 유형, 즉 배열과 객체도 있습니다. 단순하거나 복합적인 데이터 유형을 더 포함 할 수 있습니다. PHP 매뉴얼에서 배열의 값에 접근하는 방법과 객체에서 접근 할 수있는 방법을 배울 수 있습니다. 나는 당신이 이미 그 점을 알고 있다고 생각합니다. 그래서 여기에 링크되어 있기 때문입니다.

    당신이 그것에 대해 배울 때, 당신은 이것을 결합 할 수 있습니다. 예 : 객체 내에 배열이 있고 거기에 원하는 문자열이 있으면 $ 기호와 변수 이름을 필요한 접근 자, 속성 이름 및 배열 키와 결합해야합니다. 그런 다음 당신은 당신의 가치를 얻습니다. 게시 한 데이터에는 다른 객체와 배열이있는 객체가 있고 결국에는 변수 이름을 찾습니다.

    몇 가지 조합 예 :

    var_dump($variable->handler->view[0]->_field_data);
    

    이것은 위에서 제공 한 데이터를 기반으로합니다. $ 변수는 시작하는 곳이고, -> 변수의 이름과 같이 명명되어야하는 개체 멤버에 액세스하는 데 사용됩니다. 디버거 출력에서 ​​핸들러가 객체라는 것을 알았으므로 ->를 다시 사용하여 뷰 멤버에 액세스해야합니다.

    지금보기는 배열이기 때문에보기가 다릅니다. 배열의 값에 액세스하려면 []를 사용하고 거기에 키를 입력하십시오. 내 예제의 키는 숫자 0입니다. 그리고 그 배열 항목의 값이 다시 객체이기 때문에 다음 단계에서 ->를 다시 사용해야합니다.

    관심이있는 요소에 도달 할 때까지이 게임을 계속할 수 있습니다. 이미 가지고있는 디버그 출력은 값을 반환하는 표현식을 작성하는 데 도움이됩니다. 아마도 그것은 :

    $field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']
    

    그러나 나는 그것이 내 시스템에서 충분히 유효하다는 것을 증명할 수는 없다.

    그러나 물건을 발견 할 때, 요소를 찾을 때까지 단계를 단계별로 확장 할 수 있으므로 var_dump를 사용하는 것이 좋습니다. 오류가 발생하면 즉시 볼 수 있습니다. 때로는 die ()를 배치하는 것이 도움이됩니다. var_dump 문 다음에 응답을 끝내지 않으려면 정보를 숨길 수있는 많은 다른 데이터가 포함되어 있어야합니다. devel 플러그인은 눈에 띄는 값을 덤프하는 추가 디버그 루틴을 제공합니다.

  2. ==============================

    2.이것이 당신의 목표라면 :

    이것이 당신의 목표라면 :

    field_image (Object) stdClass 
      handler (Object) views_handler_field_field 
        view (Object) view 
          result (Array, 2 elements) 
            0 (Object) stdClass 
              _field_data (Array, 1 element) 
                nid (Array, 2 elements) 
                  entity (Object) stdClass
                    field_image (Array, 1 element) 
                      und (Array, 1 element)
                        0 (Array, 11 elements)                                      
                          filename (String, 23 characters ) FILENAME.jpg
    

    당신이 그것을 찾을 수있을 것 같아요 :

    field_image->handler->view->result[0]->_field_data['nid'][entity]->field_image['und'][0]['filename]
    

    거기에 실수가 될 수 있지만, 일반적인 아이디어는 : 객체가 있다면 ->를 사용하여 변수를 가져오고 배열이 있다면 [key]를 사용하십시오.

  3. ==============================

    3.$ node에 노드 객체가 있다고 가정 해 봅시다. 당신은 그 값을 다음과 같이 인쇄 할 수 있습니다.

    $ node에 노드 객체가 있다고 가정 해 봅시다. 당신은 그 값을 다음과 같이 인쇄 할 수 있습니다.

    dpm($node); // remember this function is declared in devel module
    

    그런 다음 $ node의 정보를보고 클릭 한 번으로 내부 필드를 확장 할 수 있습니다. 그리고 필드를 두 번 클릭하면 PHP 경로를 볼 수 있습니다.

    이 결과는 다음과 같습니다.

    희망이 도움이됩니다!

    PD : D6의 dpm에서는이 기능을 사용할 수 없습니다.

  4. ==============================

    4.시험:

    시험:

    $field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']
    
  5. ==============================

    5.devel을 설치하고 사용해보십시오.

    devel을 설치하고 사용해보십시오.

    krumo ($variable);
    

    기본적으로 admin 사용자 만 krumo 명령을 사용할 수있는 권한이 있다는 것을 명심하십시오. 그러나 DEVEL 역할 사용 권한을 살펴봄으로써이 권한을 분류 할 수 있습니다. (비록 일단 당신이 한 번 이러한 권한을 제거하는 것을 잊지 마세요)

  6. ==============================

    6.

    <? print_r($something["other"]); ?>
    

    (다른 곳은 어디입니까?) 그래서 결과는 'this'

  7. ==============================

    7.내가 요약하자.

    내가 요약하자.

    print_r($data); => Traditional view of printing array.
    
    var_dump($data); => Not so much cleaned view , gives you everything but in very suffocated manner
    
    print "<pre>"; print_r($data); => A cleaned view but will not get   data types information.
    
    dpm($data); => It gives you everything, but you need to have installed devel.
    
  8. ==============================

    8.field_view_field ($ entity_type, $ entity, $ field_name, $ display = array (), $ langcode = NULL)를 사용하여 렌더링 가능한 배열을 반환해야합니다. api 문서 https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x를 확인할 수 있습니다.

    field_view_field ($ entity_type, $ entity, $ field_name, $ display = array (), $ langcode = NULL)를 사용하여 렌더링 가능한 배열을 반환해야합니다. api 문서 https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x를 확인할 수 있습니다.

  9. ==============================

    9.어떤 이유로 devel 모듈을 사용할 수 없다면 다른 유용한 "debug"함수는 var_export ()와 Drupal 래퍼 drupal_var_export ()가 될 수 있습니다. 이 함수는 결과를 PHP 코드로 제공합니다.

    어떤 이유로 devel 모듈을 사용할 수 없다면 다른 유용한 "debug"함수는 var_export ()와 Drupal 래퍼 drupal_var_export ()가 될 수 있습니다. 이 함수는 결과를 PHP 코드로 제공합니다.

  10. from https://stackoverflow.com/questions/6322084/able-to-see-a-variable-in-print-rs-output-but-not-sure-how-to-access-it-in-c by cc-by-sa and MIT license