我有一个包含比这个更多的项目的数组。 这只是一个项目的示例:
[0] => Array
(
[id] => 6739380664
[created_at] => 1260991464
[text] => @codeforge thx for following
[source] => web
[user] => Array
(
[id] => 90389269
[name] => Lea@JB
[screen_name] => Lea_JB
[description] => Fan of JB and Daourite singers!! (:
[location] => Germany
[url] =>
[protected] =>
[followers_count] => 33
[profile_image_url] => http://a3.01/Usher_und_JB_normal.jpg
)
[truncated] =>
[favorited] =>
[in_reply_to_status_id] =>
[in_reply_to_user_id] => 18055539
)
我有一个功能
function parseLink($text)
{
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $text);
return $text;
}
如何为数组项parseLink($text)
应用我的函数text
,而不必经历循环?
它返回包含所有所有字段的整个数组,但是使用了modiefied数组字段
text
?这不仅仅是项目$myarray[0]
;还有更多项目,例如$myarray[1],$myarray[2]
和很快。
答案 0 :(得分:6)
您可以通过两种不同的方式完成此任务:
1)您可以使用parseLink()
的返回值并在数组中重新分配变量:
$myText = parseLink($myArray[0]['text']);
$myArray[0]['text'] = $myText;
2)您可以修改parseLink()
函数以通过引用接受参数,这将导致它被修改到位:
function parseLink(&$text)
{
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $text);
return $text;
}
parseLink($myArray[0]['text']);
答案 1 :(得分:1)
编辑:我的错误,试试这个:
$myFunction = function parseLink($text) { /* do stuff with $text */ };
array_map($myFunction,$myArray);
答案 2 :(得分:1)
// assume your array is stored in $myArray
parseLink($myArray[0]['text']);
你应该改变你的功能以便通过引用传递:
function parseLink(&$text)
{
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $text);
}
请注意,我修复了parseLink()
功能中的错误。
答案 3 :(得分:1)
function parseLink($data)
{
if(is_array($data) && isset($data['text']))
{
$data['text'] = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $data['text']);
} elseif(is_string($data))
{
$data = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $data);
}
return $data;
}
array_map('parseLink', $myArray);