찾다

 >  Q&A  >  본문

php - 다차원 배열의 가장 바깥쪽 키를 제거하고 값을 유지합니다.

이것이 배열입니다. array_values를 사용한 후 배열을 매개변수로 사용할 수 없다는 ID impolde 프롬프트에 따라 재정렬된 것 같고 개체도 사용되며 json도 변환되는 것으로 나타났습니다. 어떻게 가야 하나요?

업데이트:

이것으로 충분하지만 새 retlist 0 array_colum 이후에 인쇄된 결과 [0]이 배열의 끝으로 이동했습니다.

phpcn_u1582phpcn_u15822720일 전2518

모든 응답(3)나는 대답할 것이다

  • 代言

    代言2017-06-23 09:13:13

    JSON을 PHP 배열로 변환하려는 경우 방법은 다음과 같습니다

    우선, 데이터 형식은 JSON이므로 먼저 PHP 배열로 변환해야 합니다.

    으아악

    json_decode第二个参数为TRUE은 키 이름을 유지한다는 의미입니다. 그렇지 않으면 JSON이 PHP 배열로 변환된 후 PHP 배열의 키 이름이 재정렬됩니다.

    그런 다음 $a['data']值用array_column处理,或者使用array_values 데이터에서 배열 값을 재정렬합니다.

    으아악

    PHP를 JSON으로 변환하고 싶다면 DataData为数组[]를 사용하세요.

    PHP 배열에 있는 한 먼저 위의 array_column或者array_values处理过$a['Data']을 따른 다음 직접 실행하세요

    으아악

    주의json_encode第二个参数绝对不能用JSON_FORCE_OBJECT,否则还是会使Data变为对象{}.

    업데이트

    귀하의 코드를 읽은 후에는 귀하가 무엇을 하려는지 알 것 같습니다. 원래 배열에서 ID 값을 찾고 싶고 $makeupId相等的项,然后把它提前到数组第一个?如果是这样你的代码写复杂了。通过array_column()이 마법의 기능을 통해 귀하의 요구 사항을 쉽게 충족할 수 있습니다. 코드는 다음과 같습니다

    으아악

    코드 끝


    그럼 왜 array_values()array_column()都会使顺序变乱。因为这两个函数都是会重新编号的,而且它编号的顺序,不是你键名的标签顺序,也就是说你键名手动写成0,1,2,3并不会使它重新编号时候按照0,1,2,3를 사용하여 정렬하는지 다시 이야기해 보겠습니다. 번호가 다시 매겨지는 순서는 코드가 실행되는 순서에 따라 달라집니다. 즉, last...[0] = $newarr는 실제로 배열의 시작 부분이 아니라 전체 배열의 끝 부분에 있으므로 아무리 노력해도 키 이름이 0입니다. , 이 0은 요소가 모두 끝까지 실행됨에 해당합니다.


    업데이트 2

    위 코드에는 많은 주석과 설명이 있습니다. 순수한 코드는 다음과 같습니다.

    으아악

    업데이트 3

    다음에는 array_column 외에 몇 가지 가능한 솔루션을 더 추가해 보겠습니다.

    옵션 1:

    이 솔루션은 원본 코드 수정을 기반으로 합니다.
    코드의 마지막 줄에서 두 번째 줄에 $retlist = ...를 추가하세요(위

    ). 으아악

    옵션 2:

    이 솔루션은 원본 코드 수정을 기반으로 합니다.
    코드를 $retlist[0] = $newarr;改为array_unshift($retlist, $newarr);

    변경하세요.

    위에서 언급했듯이 array_columnarray_values都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]array_values 모두 번호가 다시 매겨지는 순서는 키 이름의 숫자 순서가 아니라 해당 값을 정의하는 순서에 따라 달라지므로 위 수정은 다음과 같습니다. 배열을 사용하려면 헤더 푸시 항목이 $retlist[0]의 값 정의 및 초기화를 대체합니다.

    옵션 3:

    이 역시 코드에 따라 수정됩니다.
    트래버스하기 전에 $retlist[0] = [],然后当你遍历到符合$makeupId项的时候,直接赋值给$retlist[0],这样,由于事先定义了$retlist[0]를 먼저 정의하므로 번호를 다시 매겨도 순서가 먼저 적용됩니다.

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-06-23 09:13:13

    키 값을 제거하는 것이 다차원 배열의 한 레이어를 제거하는 것과 같다는 뜻인가요? 그렇다면 대략적인 예제를 작성했으니 위의 그림처럼 이 아이디어를 따라 구현하시면 됩니다

    회신하다
    0
  • 欧阳克

    欧阳克2017-06-23 09:13:13

    처리를 더 쉽게 하려면 json 데이터를 php 배열로 변환하는 것이 가장 좋습니다. 그렇지 않으면 처리하기 어려울 것입니다.

    회신하다
    0
  • 취소회신하다