PDA

View Full Version : تبدیل تعدادی رشته به یک رشته



Salazar.mi
دوشنبه 09 دی 1398, 20:27 عصر
سلام
من اینجا تعدادی رشته دارم که همشون در $kol قرار دارند


$kol=${"b".$i};

یعنی b1 تا مثلا b100 هر کدوم جدا جدا یه رشته است
می خواهم بیام همشون را پشت سر هم بزاره یعنی وقتی var_dump گرفتم یه بار بنویسه string بعدش محتوای همه ی صد تارا نشان بده


for($i=38229;$i<38329;$i++)
{
$kol=${"b".$i};
if(isset(${"b".$i+1}))
{
$m=${"b".$i}.' '.${"b".$i+1};
var_dump($m);
}

}

اینو نوشتم ولی کار نمیکنه

ASHKANLAEI
دوشنبه 09 دی 1398, 20:38 عصر
$m = "";for($i=38229;$i<38329;$i++)
{
$m .= " " . ${"b".$i};
}
var_dump($m);

Salazar.mi
دوشنبه 09 دی 1398, 20:44 عصر
بی نهایت ممنونم
ولی این کد کار نمیکنه

Salazar.mi
دوشنبه 09 دی 1398, 20:52 عصر
کل کد من اینه


for($i=38229;$i<38329;$i++)
{
${"myfile".$i}=fopen("1/Train/$i","r+") or die("Unable to open file!");
${"string".$i}=(fread(${"myfile".$i},filesize("1/Train/$i")));

${"r".$i} = preg_replace('/[0-9_?!.,><:";\\|}{\[\]\-=+@#$%^&*()~`؟ \' \/ I II III IV ]/', ' ',${"string".$i});
${"b".$i} = preg_replace('/\b\w{1,3}\b/', ' ', ${"r".$i});
echo ${"b".$i};

$kol=${"b".$i};


$m = "";
for($j=38229;$j<38329;$j++)
{
$m .= " " . ${"b".$i};
}
var_dump($m);

$count=array_count_values(str_word_count($m, 1));
var_dump($count);


}


من یه بار فرض کردم منظور شما از for همون for بیرونیه که جواب نداد
یه بار هم کد شما را این مدلی نوشتم بازم جواب نداد
ببخشید واقعا شرمنده من خیلی اذیتتون کردم امروز

Salazar.mi
دوشنبه 09 دی 1398, 21:01 عصر
این مدلی هم نوشتم ارور میده


for($i=38229;$i<38329;$i++)
{
${"myfile".$i}=fopen("1/Train/$i","r+") or die("Unable to open file!");
${"string".$i}=(fread(${"myfile".$i},filesize("1/Train/$i")));

${"a".$i} = preg_replace('/[0-9_?!.,><:";\\|}{\[\]\-=+@#$%^&*()~`؟ \' \/ I II III IV ]/', ' ',${"string".$i});
${"c".$i} = preg_replace('/\b\w{1,3}\b/', ' ', ${"b".$i});
echo ${"c".$i};

$kol=${"c".$i};


$m = "";
for($j=38229;$j<38329;$j++)
{
$m =$m. " " . ${"c".$j};
}
var_dump($m);

$count=array_count_values(str_word_count($m, 1));
var_dump($count);


}

ASHKANLAEI
سه شنبه 10 دی 1398, 07:55 صبح
دوست عزیز من نمیدونم کجا مشکل داره اما شما j$ رو نوشتید i$ در حلقه.
و همچنین شما فکر کنم تازه دارین c$ یا b$ رو پر میکنید و باید حلقه دومی رو بیرون ببرید.
و
$m .= " " همون
$m = $m . " " هست.

ASHKANLAEI
سه شنبه 10 دی 1398, 08:07 صبح
یک کد نوشتم ببینید کار میکنه:

<?php

for ($i=38229; $i<38329; $i++) {
${"myfile".$i} = fopen("1/Train/$i","r+") or die("Unable to open file!");
${"string".$i} = fread(${"myfile".$i}, filesize("1/Train/$i"));


${"r".$i} = preg_replace('/[0-9_?!.,><:";\\|}{\[\]\-=+@#$%^&*()~`؟ \' \/ I II III IV ]/', ' ',${"string".$i});
${"b".$i} = preg_replace('/\b\w{1,3}\b/', ' ', ${"r".$i});
echo ${"b".$i};


$kol = ${"b".$i};


$m = "";
for($j=38229;$j<38329;$j++)
{
$m .= " " . ${"b".$i};
}
var_dump($m);

$count = array_count_values(str_word_count($m, 1));
var_dump($count);
}
for($j=38229;$j<38329;$j++) {
$m .= " " . ${"b".$j};
}

ASHKANLAEI
سه شنبه 10 دی 1398, 08:08 صبح
اگر بازم ارور داد بهتره متن ارور رو بزارید چون بدون اون تشخیص خطا سخت تره.

Salazar.mi
سه شنبه 10 دی 1398, 11:22 صبح
بی نهایت ممنونم
واقعا سپاسگذارم
همونجوری که گفتید باید بیرون از for میذاشتم
این مدلی جواب داد


for($i=38229;$i<38329;$i++)
{
for ($i=38229; $i<38329; $i++) {
${"myfile".$i} = fopen("1/Train/$i","r+") or die("Unable to open file!");
${"string".$i} = fread(${"myfile".$i}, filesize("1/Train/$i"));


${"r".$i} = preg_replace('/[0-9_?!.,><:";\\|}{\[\]\-=+@#$%^&*()~`؟ \' \/ I II III IV ]/', ' ',${"string".$i});
${"b".$i} = preg_replace('/\b\w{1,3}\b/', ' ', ${"r".$i});
echo ${"b".$i};

$kol = ${"b".$i};
}

$m = "";
for($j=38229;$j<38329;$j++)
{
$m .= " " . ${"b".$j};
}
var_dump($m);
$count = array_count_values(str_word_count($m, 1));
var_dump($count);
}


فقط یه چیزی با دستور array_count_values(str_word_count( که نوشتم برای پیدا کردن تعداد کلمات یک متن خوبه؟چون مثلا من کلمه path را 100 را پیدا کردم ولی بهم گفتن باید 108 باشه نگاه کردم بیشتر کلمات را خوب پیدا کرده ولی بعضی هاش متفاوته
بازم واقعا ممنون
دیشب دوباره گیر کرده بودم گفتم درست نمیشه
واقعا مممنونمممم تشکر

Salazar.mi
سه شنبه 10 دی 1398, 11:29 صبح
یه ایرادی که داره تا آخر کلمه ها را برام پیدا نمیکنه آخر خروجی مینویسه more elements...
کاریش میشه کرد
اگر همه اشو پیدا نکنه انگار هر کاری کردم تا حالا هیچی به هیچی

ASHKANLAEI
سه شنبه 10 دی 1398, 11:34 صبح
متوجه نشدم شما اگر میخواین فقط تعداد کلمات رو بدونید میتونید تنها از str_word_count استفاده کنید نیازی به array_count_values ندارید.

Salazar.mi
سه شنبه 10 دی 1398, 11:38 صبح
نه میخواهم بگه از هر کلمه چند تا وجود داره
تو اینترنت گشتم ولی همین راه حل بود
یکی ذیگه هم پیدا کردم جواب میداد ولی ارور هم میده

ASHKANLAEI
سه شنبه 10 دی 1398, 11:39 صبح
اون پیام more elements رو نمیدونم چرا میده ولی احتمالا فقط زمانی که دارید print میکنید پیام میده و همه داخلش هستن

Salazar.mi
سه شنبه 10 دی 1398, 11:42 صبح
خب الان اگر بخواهم همه کلمات را پیدا کنه و منم ببینم باید چیکار کنم

ASHKANLAEI
سه شنبه 10 دی 1398, 11:47 صبح
میتونید یک حلقه foreach بزارید.

foreach (array_count_values(str_word_count($m,1)) as $key => $val)
print_r($key . " " . $val);

Salazar.mi
سه شنبه 10 دی 1398, 13:06 عصر
بی نهایت ممنونممم
خودشه درست شد
:تشویق::تشویق::تشویق::تشویق:: شویق::تشویق::تشویق::تشویق::ت ویق::تشویق::تشویق:
واقعا ممنونم
بی نهایت ممنونم
خدا خیرتون بده
انشااله هر چی دوست دارین خدا بهتون بده