이것이 배열입니다. array_values를 사용한 후 배열을 매개변수로 사용할 수 없다는 ID impolde 프롬프트에 따라 재정렬된 것 같고 개체도 사용되며 json도 변환되는 것으로 나타났습니다. 어떻게 가야 하나요?
업데이트:
이것으로 충분하지만 새 retlist 0 array_colum 이후에 인쇄된 결과 [0]이 배열의 끝으로 이동했습니다.
代言2017-06-23 09:13:13
우선, 데이터 형식은 JSON이므로 먼저 PHP 배열로 변환해야 합니다.
으아악json_decode
第二个参数为TRUE
은 키 이름을 유지한다는 의미입니다. 그렇지 않으면 JSON이 PHP 배열로 변환된 후 PHP 배열의 키 이름이 재정렬됩니다.
그런 다음 $a['data']
值用array_column
处理,或者使用array_values
데이터에서 배열 값을 재정렬합니다.
Data
中Data
为数组[]
를 사용하세요. 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은 요소가 모두 끝까지 실행됨에 해당합니다.
위 코드에는 많은 주석과 설명이 있습니다. 순수한 코드는 다음과 같습니다.
으아악다음에는 array_column
외에 몇 가지 가능한 솔루션을 더 추가해 보겠습니다.
이 솔루션은 원본 코드 수정을 기반으로 합니다.
코드의 마지막 줄에서 두 번째 줄에 $retlist = ...
를 추가하세요(위
이 솔루션은 원본 코드 수정을 기반으로 합니다.
코드를 $retlist[0] = $newarr;
改为array_unshift($retlist, $newarr);
위에서 언급했듯이 array_column
和array_values
都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]
및 array_values
모두 번호가 다시 매겨지는 순서는 키 이름의 숫자 순서가 아니라 해당 값을 정의하는 순서에 따라 달라지므로 위 수정은 다음과 같습니다. 배열을 사용하려면 헤더 푸시 항목이 $retlist[0]
의 값 정의 및 초기화를 대체합니다.
이 역시 코드에 따라 수정됩니다.
트래버스하기 전에 $retlist[0] = []
,然后当你遍历到符合$makeupId
项的时候,直接赋值给$retlist[0]
,这样,由于事先定义了$retlist[0]
를 먼저 정의하므로 번호를 다시 매겨도 순서가 먼저 적용됩니다.
滿天的星座2017-06-23 09:13:13
키 값을 제거하는 것이 다차원 배열의 한 레이어를 제거하는 것과 같다는 뜻인가요? 그렇다면 대략적인 예제를 작성했으니 위의 그림처럼 이 아이디어를 따라 구현하시면 됩니다