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