print_r ()의 출력에서 변수를 볼 수 있지만 코드에서 액세스하는 방법을 모릅니다.
PHPprint_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.변수에서 값을 읽어야 할 때마다 그 값에 액세스하기 위해 어떤 표현식을 공식화해야 하는지를 알아야합니다.
변수에서 값을 읽어야 할 때마다 그 값에 액세스하기 위해 어떤 표현식을 공식화해야 하는지를 알아야합니다.
간단한 변수 값의 경우 이것은 간단합니다. 변수 이름을 가져 와서 $ 기호를 접두사로 사용하여 변수에 액세스하면됩니다.
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.이것이 당신의 목표라면 :
이것이 당신의 목표라면 :
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.$ node에 노드 객체가 있다고 가정 해 봅시다. 당신은 그 값을 다음과 같이 인쇄 할 수 있습니다.
$ node에 노드 객체가 있다고 가정 해 봅시다. 당신은 그 값을 다음과 같이 인쇄 할 수 있습니다.
dpm($node); // remember this function is declared in devel module
그런 다음 $ node의 정보를보고 클릭 한 번으로 내부 필드를 확장 할 수 있습니다. 그리고 필드를 두 번 클릭하면 PHP 경로를 볼 수 있습니다.
이 결과는 다음과 같습니다.
희망이 도움이됩니다!
PD : D6의 dpm에서는이 기능을 사용할 수 없습니다.
-
==============================
4.시험:
시험:
$field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']
-
==============================
5.devel을 설치하고 사용해보십시오.
devel을 설치하고 사용해보십시오.
krumo ($variable);
기본적으로 admin 사용자 만 krumo 명령을 사용할 수있는 권한이 있다는 것을 명심하십시오. 그러나 DEVEL 역할 사용 권한을 살펴봄으로써이 권한을 분류 할 수 있습니다. (비록 일단 당신이 한 번 이러한 권한을 제거하는 것을 잊지 마세요)
-
==============================
6.
<? print_r($something["other"]); ?>
(다른 곳은 어디입니까?) 그래서 결과는 'this'
-
==============================
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.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.어떤 이유로 devel 모듈을 사용할 수 없다면 다른 유용한 "debug"함수는 var_export ()와 Drupal 래퍼 drupal_var_export ()가 될 수 있습니다. 이 함수는 결과를 PHP 코드로 제공합니다.
어떤 이유로 devel 모듈을 사용할 수 없다면 다른 유용한 "debug"함수는 var_export ()와 Drupal 래퍼 drupal_var_export ()가 될 수 있습니다. 이 함수는 결과를 PHP 코드로 제공합니다.
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
'PHP' 카테고리의 다른 글
큰 파일을 한 줄씩 읽는 방법 (0) | 2018.09.05 |
---|---|
PHP로 비동기 HTTP 요청을하는 법 (0) | 2018.09.05 |
PHP에서 변수 이름을 문자열로 가져 오는 방법은 무엇입니까? (0) | 2018.09.05 |
PDOException "드라이버를 찾을 수 없습니다" (0) | 2018.09.05 |
PHP curl로 HTTP 기본 인증을 사용하여 요청하는 방법은 무엇입니까? (0) | 2018.09.05 |