PHP의 배열에서 여러 개의 동일한 값을 어떻게 인쇄 할 수 있습니까?

트로이

배열 내부에서 찾은 값 앞뒤에 10 개의 단어를 인쇄하는 기본 일치 스크립트를 만들려고합니다. 텍스트를 배열로 분할하고 값의 위치를 ​​식별 한 다음 중간에 검색된 값을 사용하여 -10과 +10을 인쇄하여이 작업을 수행했습니다. 그러나 이것은 첫 번째 발생 일뿐입니다. array_keys (52, 78, 80 위치에 있음)를 사용하여 다른 것을 찾을 수 있다는 것을 알고 있지만 array_keys 도 배열을 생성하기 때문에 일치 항목을 순환하는 방법을 잘 모르겠습니다 . 따라서 배열에서 동일한 피연산자를 정수로 사용할 수 없기 때문에 아래 $ location 대신 $ matches ( array_keys 사용 )를 사용하면 작동하지 않습니다. 어떤 제안? 감사합니다!!

<?php

$text = <<<EOD
The spread of a deadly new virus is accelerating, Chinese President Xi Jinping warned, after holding a special government meeting on the Lunar New Year public holiday.
The country is facing a "grave situation" Mr Xi told senior officials.
The coronavirus has killed at least 42 people and infected some 1,400 since its discovery in the city of Wuhan.
Meanwhile, UK-based researchers have warned of a real possibility that China will not be able to contain the virus.
Travel restrictions have come in place in several affected cities. From Sunday, private vehicles will be banned from central districts of Wuhan, the source of the outbreak.
EOD;

$new = explode(" ", $text);
$location = array_search("in", $new, FALSE);
$concordance = 10;

$top_range = $location + $concordance;
$bottom_range = $location - $concordance;

while($bottom_range <= $top_range) {
    echo $new[$bottom_range] . " ";
    $bottom_range++;
}

?>
새긴 ​​금

array_keys사용 하여 위치의 양쪽 단어 array_slice를 추출 하고 문장을 다시 합치는 데 사용하여 에서 반환 된 값을 반복 할 수 있습니다 .$concordanceimplode

$words = explode(' ', $text);
$concordance = 10;
$results = array();
foreach (array_keys($words, 'in') as $idx) {
    $results[] = implode(' ', array_slice($words, max($idx - $concordance, 0), $concordance * 2 + 1));
}
print_r($results);

산출:

Array
(
    [0] => least 42 people and infected some 1,400 since its discovery in the city of Wuhan.
Meanwhile, UK-based researchers have warned of a
    [1] => not be able to contain the virus.
Travel restrictions have come in place in several affected cities. From Sunday, private vehicles will
    [2] => able to contain the virus.
Travel restrictions have come in place in several affected cities. From Sunday, private vehicles will be banned
)

단어 내에서 단어가 두 번 나오는 유사한 구문을 생성하지 않으려면 $concordance(예 : 위 배열의 인덱스 1과 2) 마지막 일치의 끝 위치를 유지하고 해당 일치에서 발생하는 항목을 건너 뛸 수 있습니다.

$words = explode(' ', $text);
$concordance = 10;
$results = array();
$last = 0;
foreach (array_keys($words, 'in') as $idx) {
    if ($idx < $last) continue;
    $results[] = implode(' ', array_slice($words, max($idx - $concordance, 0), $concordance * 2 + 1));
    $last = $idx + $concordance;
}
print_r($results);

산출

Array
(
    [0] => least 42 people and infected some 1,400 since its discovery in the city of Wuhan.
Meanwhile, UK-based researchers have warned of a
    [1] => not be able to contain the virus.
Travel restrictions have come in place in several affected cities. From Sunday, private vehicles will
)

3v4l.org의 데모

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JavaScript에서 배열의 여러 요소를 어떻게 기록하거나 인쇄 할 수 있습니까?

분류에서Dev

키가 동일한 여러 배열에 값이 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

다른 여러 배열의 값을 새 단일 배열로 어떻게 전달할 수 있습니까?

분류에서Dev

여러 개의 numpy 배열에서 동일한 셔플을 수행 할 수 있습니까?

분류에서Dev

열거 형 배열에서 열거 형 값의 존재 여부를 어떻게 확인할 수 있습니까?

분류에서Dev

PHP에서 여러 배열 값이있는 여러 문자열을 어떻게 반복 할 수 있습니까?

분류에서Dev

2 개의 IPv6 주소가 동일한 경우 PHP에서 어떻게 확인할 수 있습니까?

분류에서Dev

데이터 프레임을 반복하는 동안 새로 찾은 값을 동일한 인덱스의 새 열에 어떻게 배치 할 수 있습니까?

분류에서Dev

한 열에 두 열의 합계를 어떻게 인쇄 할 수 있습니까?

분류에서Dev

codeigniter에서 여러 입력 (type = "text")에 동일한 이름을 사용하고 있습니다. 제출 중에 하나 이상의 값을 허용하고 싶습니다. 어떻게 확인할 수 있습니까?

분류에서Dev

값을 삽입하는 동안 두 개의 열을 어떻게 확인할 수 있습니까?

분류에서Dev

Evince에서 동일한 문서의 여러 인스턴스를 어떻게 열 수 있습니까?

분류에서Dev

우편 배달부에서 JSON 배열 값의 유효성을 어떻게 확인할 수 있습니까?

분류에서Dev

배치 스크립트의 파일에 명령 출력을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

배열의 가장 낮은 키 값을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

Vue에서 선택한 여러 항목의 배경을 어떻게 채색 할 수 있습니까?

분류에서Dev

동일한 페이지의 여러 위치에서 동일한 React 앱을 어떻게 사용할 수 있습니까?

분류에서Dev

파이썬에서 함수의 값을 어떻게 인쇄하고 반환 할 수 있습니까?

분류에서Dev

git bash에서 텍스트 파일의 내용을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

Windows의 명령 프롬프트에서 텍스트 파일을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

폴더에있는 모든 파일의 이름을 어떻게 인쇄 할 수 있습니까?

분류에서Dev

동일한 플롯에서 완전히 다른 의미로 여러 열을 어떻게 플롯 할 수 있습니까?

분류에서Dev

PHP에서 2 개의 값을 어떻게 전달할 수 있습니까?

분류에서Dev

그러한 배열을 어떻게 정의 할 수 있습니까?

분류에서Dev

하나의 새 열이 조건부 인 R에서 여러 열을 사용하여 한 열의 값을 어떻게 나타낼 수 있습니까?

분류에서Dev

파일의 여러 줄에서 단어 뒤의 모든 것을 어떻게 삭제할 수 있습니까?

분류에서Dev

맵에서 동일한 값을 가진 키의 수를 어떻게 세고 저장할 수 있습니까?

분류에서Dev

조건부 배열의 값을 어떻게 확인할 수 있습니까?

분류에서Dev

조건부 배열의 값을 어떻게 확인할 수 있습니까?

Related 관련 기사

  1. 1

    JavaScript에서 배열의 여러 요소를 어떻게 기록하거나 인쇄 할 수 있습니까?

  2. 2

    키가 동일한 여러 배열에 값이 있는지 어떻게 확인할 수 있습니까?

  3. 3

    다른 여러 배열의 값을 새 단일 배열로 어떻게 전달할 수 있습니까?

  4. 4

    여러 개의 numpy 배열에서 동일한 셔플을 수행 할 수 있습니까?

  5. 5

    열거 형 배열에서 열거 형 값의 존재 여부를 어떻게 확인할 수 있습니까?

  6. 6

    PHP에서 여러 배열 값이있는 여러 문자열을 어떻게 반복 할 수 있습니까?

  7. 7

    2 개의 IPv6 주소가 동일한 경우 PHP에서 어떻게 확인할 수 있습니까?

  8. 8

    데이터 프레임을 반복하는 동안 새로 찾은 값을 동일한 인덱스의 새 열에 어떻게 배치 할 수 있습니까?

  9. 9

    한 열에 두 열의 합계를 어떻게 인쇄 할 수 있습니까?

  10. 10

    codeigniter에서 여러 입력 (type = "text")에 동일한 이름을 사용하고 있습니다. 제출 중에 하나 이상의 값을 허용하고 싶습니다. 어떻게 확인할 수 있습니까?

  11. 11

    값을 삽입하는 동안 두 개의 열을 어떻게 확인할 수 있습니까?

  12. 12

    Evince에서 동일한 문서의 여러 인스턴스를 어떻게 열 수 있습니까?

  13. 13

    우편 배달부에서 JSON 배열 값의 유효성을 어떻게 확인할 수 있습니까?

  14. 14

    배치 스크립트의 파일에 명령 출력을 어떻게 인쇄 할 수 있습니까?

  15. 15

    배열의 가장 낮은 키 값을 어떻게 인쇄 할 수 있습니까?

  16. 16

    Vue에서 선택한 여러 항목의 배경을 어떻게 채색 할 수 있습니까?

  17. 17

    동일한 페이지의 여러 위치에서 동일한 React 앱을 어떻게 사용할 수 있습니까?

  18. 18

    파이썬에서 함수의 값을 어떻게 인쇄하고 반환 할 수 있습니까?

  19. 19

    git bash에서 텍스트 파일의 내용을 어떻게 인쇄 할 수 있습니까?

  20. 20

    Windows의 명령 프롬프트에서 텍스트 파일을 어떻게 인쇄 할 수 있습니까?

  21. 21

    폴더에있는 모든 파일의 이름을 어떻게 인쇄 할 수 있습니까?

  22. 22

    동일한 플롯에서 완전히 다른 의미로 여러 열을 어떻게 플롯 할 수 있습니까?

  23. 23

    PHP에서 2 개의 값을 어떻게 전달할 수 있습니까?

  24. 24

    그러한 배열을 어떻게 정의 할 수 있습니까?

  25. 25

    하나의 새 열이 조건부 인 R에서 여러 열을 사용하여 한 열의 값을 어떻게 나타낼 수 있습니까?

  26. 26

    파일의 여러 줄에서 단어 뒤의 모든 것을 어떻게 삭제할 수 있습니까?

  27. 27

    맵에서 동일한 값을 가진 키의 수를 어떻게 세고 저장할 수 있습니까?

  28. 28

    조건부 배열의 값을 어떻게 확인할 수 있습니까?

  29. 29

    조건부 배열의 값을 어떻게 확인할 수 있습니까?

뜨겁다태그

보관