특정 문자열을 포함하는 배열에서 배열 만들기

고텐 13

scandir ()에서 만든 desc 배열이 있습니다. 다음은 배열의 작은 예입니다.

[7] => 20151227NY [8] => 20151226NY [9] => 20151221NY [10] => 20151125CT [11] => 20140313NY [12] => 20140228NY [13] => 20140227NY [14] => 20140226NH [15] => 20140226CT [16] => 20140128NJ [17] => 20140123NY [18] => 20140122CT [19] => 20140121NJ [20] => 20140102NY [21] => 20131231NJ 

이는 YearMonthDateState를 사용하여 이름이 지정된 모든 폴더입니다. "NY", "CT", "NJ", "NH"가 포함 된 모든 폴더를 가져 와서 desc 순서 (최신 날짜 먼저)로 정렬하는 별도의 배열에 넣는 방법이 필요합니다. 이렇게하면 최신 날짜 (폴더 이름에 있음)에 따라 필요한 파일을 가져올 수 있습니다. 나는 이것을 시도했다 :

//GET WEEKLY FOLDER
$weekly_dir = "../email/weekly/";
$weekly_files = scandir($weekly_dir, $sorting_order = 1);
$weekly_index =  $weekly_files[7];
$weekly_state = substr($weekly_index, 8,2);
$new_weekly = str_replace($weekly_state, $template->State, $weekly_index);
echo $new_weekly;

그러나 불행히도 모든 새로운 "주간"이 같은 날짜에 업로드되는 것은 아닙니다. 따라서 마지막에 상태 문자열 ( "NY" "NH"등)을 전환 할 수 없습니다. 어떤 아이디어?

** 업데이트 : ** Michael이 제안한대로 코드를 추가 / 수정 했으므로 이제 코드가 다음과 같이 보입니다.

$weekly_dir = "../email/weekly/";
$weekly_file_array = scandir($weekly_dir, $sorting_order = 1);
$index = $weekly_file_array;

// Prepare result
$weeklies = array_fill_keys(array_map(function ($item) {
if (substr($item, -2) == 'NY'){
    return substr($item, -2);
}
}, $index),$item);

// Split into state arrays
array_walk($index, function ($item) use (&$weeklies) {
    $state = substr($item, -2);
    $weeklies[$state][] = $item;
});

$weeklies_latest = array_combine(array_keys($weeklies), array_map(function ($item) {
    sort($item);
    return array_pop($item);
 }, $weeklies));

잘 작동하는 것 같지만 페이지 상단에 다음 두 오류가 표시됩니다. "경고 : sort ()는 매개 변수 1이 배열이 될 것으로 예상하고, null이 주어집니다." "경고 : array_pop ()은 매개 변수 1이 배열이 될 것으로 예상하고, null이 주어짐" . 다음과 같이 $ weeklies_latest 배열을 호출합니다.

<a href="/COMM/email/weekly/<? echo $weeklies_latest[$template->State] ?>/weekly.html" class="button-link button-link-blue">CURRENT ISSUE</a>
남자 이름

코드를 더 읽기 쉽게 만들기 때문에 일반적으로 두 단계로 수행합니다.

우선은의 조합을 사용하여, 상태에 따라 결과를 준비 array_fill_keys하고array_map

// Prepare result
$weeklies = array_fill_keys(array_map(function ($item) {
    return substr($item, -2);
}, $input), []);

이것은 빈 배열을 가리키는 키로 상태를 갖는 배열을 빌드합니다. 다음 단계에서 다시 한 번 모든 요소를 ​​"워크"한 다음 적절한 상태 배열에 추가합니다.

// Split into state arrays
array_walk($input, function ($item) use (&$weeklies) {
    $state = substr($item, -2);
    $weeklies[$state][] = $item;
});

(이것이 한 단계에서 어떻게 수행 될 수 있는지 알 수 있습니까? 선호하는 경우 foreach대신 사용할 수 있습니다 array_walk)

이제 다음과 같이 남았습니다.

Array
(
    [NY] => Array
        (
            [0] => 20151227NY
            [1] => 20151226NY
            [2] => 20151221NY
            [3] => 20140313NY
            [4] => 20140228NY
            [5] => 20140227NY
            [6] => 20140123NY
            [7] => 20140102NY
        )

    [CT] => Array
        (
            [0] => 20151125CT
            [1] => 20140226CT
            [2] => 20140122CT
        )

    [NH] => Array
        (
            [0] => 20140226NH
        )

    [NJ] => Array
        (
            [0] => 20140128NJ
            [1] => 20140121NJ
            [2] => 20131231NJ
        )

)

각 상태에 대한 최신 정보를 선택하려면 파일 시스템에서 순서를 보장 할 수 없기 때문에 날짜를 정렬해야합니다 (데이터에서 보임). 정렬 후 우리는 마지막에 하나를 선택합니다. array_pop하루가 실패했거나 그렇지 않은 일주일이 있기 때문에 나는 사용 하고 있으므로 완벽한 데이터에 의존하지 않는 것이 좋습니다.

$weeklies_latest = array_combine(array_keys($weeklies), array_map(function ($item) {
    sort($item);
    return array_pop($item);
 }, $weeklies));

array_combinePHP에는 array_map연관 배열 에서 작동 하는 내장 기능이 없기 때문에 사용 하고 있습니다.

$weekly_latest 이제 다음이 포함됩니다.

Array
(
    [NY] => 20151227NY
    [CT] => 20151125CT
    [NH] => 20140226NH
    [NJ] => 20140128NJ
)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

특정(이중) 문자를 포함하는 문자열에서 문자열 배열 만들기

배열 배열에서 특정 문자열을 포함하는 배열 반환

특정 값을 포함하는 요소만으로 기존 배열에서 새 배열 만들기

특정 요소를 포함하는 배열 목록 만들기

CSV 파일의 특정 문자열을 포함하는 모든 행으로 배열 만들기

특정 문자를 포함하는 문자열에서 사전 만들기

JavaScript : 특정 문자열을 포함하는 속성이있는 배열에서 객체 찾기

특정 길이의 문자열에서 배열 만들기

정수 배열에서 문자열(문자 포인터) 만들기

특정 키와 문자열이 있는 배열을 하나의 배열로 만들기

배열에서 k 개의 연속 문자열을 포함하는 문자열 조합 만들기

특정 제약 조건과 함께 신속하게 사용하여 문자열 배열에서 Trie 만들기

문자열 배열에서 특정 하위 문자열(정규식 기반)을 추출하는 방법

특정 문자열을 포함하는 배열 키 계산

배열을 사용하여 DOS에서 문자열 만들기

특정 값을 포함하지 않는 배열이있는 문서 찾기

특정 값을 포함하는 배열이있는 문서 찾기

postgresql의 문자열 배열에 지정된 문자열을 포함하는 행만 반환

문자열에서 특정 기호의 배열을 제거하는 JS 함수를 작성하는 방법

Java에서만 문자열의 특정 부분을 확인하여 문자열 배열의 중복 제거

문자열에서 배열을 만드는 정규식

배열의 특정 속성을 포함하는 문서 가져 오기

Postgres의 특정 문자열 값을 포함하는 배열을 포함하는 JSON 배열의 요소 가져오기

Java를 사용하여 mongodb에서 특정 값을 포함하는 배열이있는 문서 찾기

Spark의 문자열 배열을 포함하는 RDD에서 SQLContext 데이터 세트 만들기

문자열 배열에서 하위 문자열을 포함하는 모든 문자열 찾기

문자열을 포함하는 문자형 배열에서 요소 찾기

문자열의 특정 문자로 배열 만들기

문자열 배열에서 특정 문자열을 추출하는 JS

TOP 리스트

  1. 1

    Matlab의 반복 Sortino 비율

  2. 2

    ImageJ-히스토그램 빈을 변경할 때 최대, 최소 값이 변경되는 이유는 무엇입니까?

  3. 3

    Excel : 합계가 N보다 크거나 같은 상위 값 찾기

  4. 4

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  5. 5

    원-사각형 충돌의 충돌 측면을 찾는 문제

  6. 6

    Oracle VirtualBox-설치를 위해 게스트를 부팅 할 때 호스트 시스템이 충돌 함

  7. 7

    어떻게 아무리 "나쁜", ANY의 SSL 인증서와 HttpClient를 사용하지합니다

  8. 8

    Ubuntu는 GUI에서 암호로 사용자를 만듭니다.

  9. 9

    잘못된 상태 예외를 발생시키는 Apache PoolingHttpClientConnectionManager

  10. 10

    Python 사전을 사용하는 동안 "ValueError : could not convert string to float :"발생

  11. 11

    openCV python을 사용하여 텍스트 문서에서 워터 마크를 제거하는 방법은 무엇입니까?

  12. 12

    Vuetify 다중 선택 구성 요소에서 클릭 한 항목의 값 가져 오기

  13. 13

    C ++ VSCode에서 같은 줄에 중괄호 서식 지정

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    JQuery datepicker 기능이 인식되지 않거나 새 프로젝트에서 작동하지 않음

  16. 16

    cuda 11.1에서 Pytorch를 사용할 때 PyTorch가 작동하지 않음: Dataloader

  17. 17

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  18. 18

    상황에 맞는 메뉴 색상

  19. 19

    마우스 휠 JQuery 이벤트 핸들러에 대한 방향 가져 오기

  20. 20

    매개 변수에서 쿼리 객체를 선언하는 방법은 무엇입니까?

  21. 21

    Maven은 아이 프로젝트 대상 폴더를 청소하지

뜨겁다태그

보관