簡體   English   中英

從這個特定文件中獲取數據的最有效方法是什么?

[英]What's the most efficient way to grab data from this particular file?

我正在嘗試考慮解析存儲名稱,學生資格和Facebook ID的文件的最有效方法。 我正在嘗試獲取fbid值,所以對於這個特定的行,它將是:1281766051。我考慮過使用正則表達式,但我有點迷失在哪里開始 我考慮將所有這些數據添加到一個數組並切斷它,但它似乎效率低下。

{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}

如果帖子太簡短,我道歉。 我會盡我所能添加任何我可能錯過的東西。 謝謝。

好吧,這似乎是JSON,所以正確的方法是

$json = json_decode($str);
$id = $json->fbid;

正則表達式解決方案如下所示:

preg_match('/"fbid":"(\d+)"/', $str, $matches);
$id = $matches[1];

但我不能告訴你我的哪個更有效率。 你必須對它進行分析。

更新:

我對執行時間進行了非常基本的檢查(沒有太可靠,我只測量了兩個代碼的1,000,000次執行)。 對於您的特定輸入,差異可以忽略不計:

json_decode: 27s
preg_match:  24s

但是,如果您的JSON記錄變大(例如,如果我在字符串的開頭添加3個字段(以便兩個解決方案都受到影響)),則差異變得非常明顯:

json_decode: 46s
preg_match:  30s

現在,如果我將三個字段添加到字符串的末尾,則差異會變得更大(顯然,因為preg_match在匹配后不關心任何事情):

json_decode: 45s
preg_match:  24s

即便如此,在應用這樣的優化之前,請對應用程序進行適當的分析,並確保這實際上是一個至關重要的瓶頸。 如果不是,則不值得使用正則表達式函數來模糊JSON解析代碼。

這是JSON,使用:

$str = '{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}';
$data = json_decode($str);

echo $data->fbid;

干杯

使用json_decode

$txt='{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}';
$student =json_decode($txt);
echo $student->fbid;

暫無
暫無

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

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