簡體   English   中英

每次發生時更改數組中項目的值 PHP

[英]Change value of an item in array each time it occurs PHP

我是 PHP 的初學者。 我想上傳一個 csv 文件並創建一個數組。 在該數組中,我希望更改某個鍵的值。

例如查詢鍵:From [query] => https://www.example.com/search/output/person/?loc=%5B%22105490917%22%2C%22101452733%22%5D&keywords=Computational%20Biologist&origin=主持人

To [查詢] => 計算生物學家

由於 &keywords= 和 &origin= 是一致的,我嘗試使用 strstr、str_replace 和 substr 的混合,當使用上述數據設置單個變量時這些工作有效,但當數據是數組的一部分時則不行。

每次出現在數組中時,任何人都可以幫助刪除不需要的數據嗎?

我正在嘗試上傳、更改並放入數組的 csv 文件中的數據

query,firstName,lastName,
https://www.example.com/search/output/person/?loc=%5B%22105490917%22%2C%22101452733%22%5D&keywords=Computational%20Biologist&origin=host,John,Smith,
https://www.example.com/search/output/person/?loc=%5B%22105490917%22%2C%22101452733%22%5D&keywords=Computational%20Biologist&origin=host,fred,clause,
https://www.example.com/search/output/person/?loc=%5B%22105490917%22%2C%22101452733%22%5D&keywords=Computational%20Biologist&origin=host,brendan,bobby,

到目前為止我的代碼:

<form enctype='multipart/form-data' action='' method='post'>
        
<label>Upload  CSV file Here</label><br>
 
<input size='50' type='file' name='filename'>
</br>
<input type='submit' name='submit' value='Upload File'>
 
</form>

<?php

if (isset($_POST['submit'])) 
    {
$file = fopen($_FILES['filename']['tmp_name'], "r");
$all_rows = array();
$header = fgetcsv($file);
while ($row = fgetcsv($file)) {
  $all_rows[] = array_combine($header, $row);   
    }
}
        
    
    
    echo "<pre>";
  print_r($all_rows);
    echo "</pre>";

我想留下一個看起來像這樣的數組:

Array
(
    [0] => Array
        (
            [query] => Computational Biologist
            [firstName] => John
            [lastName] => Smith
            [] => 
        )

    [1] => Array
        (
            [query] => Computational Biologist
            [firstName] => fred
            [lastName] => clause
            [] => 
        )

    [2] => Array
        (
            [query] => Computational Biologist
            [firstName] => brendan
            [lastName] => bobby
            [] => 
        )

)

我找到了一種使用以下方法:

foreach($all_rows as $key => $value)
{
  $all_rows[$key]['query'] = strstr($all_rows[$key]['query'], 'keywords=');

    $all_rows[$key]['query'] = str_replace('keywords=', '',$all_rows[$key]['query']);
    $all_rows[$key]['query'] = substr($all_rows[$key]['query'], 0, strpos($all_rows[$key]['query'], "&"));
    $all_rows[$key]['query']= urldecode($all_rows[$key]['query']);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM